debugger-aware code

Вот вы думаете зачем все используют сеттеры-геттеры, хотя казалось бы можно было и без них? А чтобы брейкпоинты ставить легче было.

И вообще очень много где этот аргумент выдвигают.

HOWTO: find static symbol for use in VS2010 debugger

Например, чтобы поставить breakpoint на функцию при отсутствии исходников или посмотреть переменную.

— найти на диске C:\Program Files (x86)\Microsoft Visual Studio 10.0\DIA SDK\Samples\DIA2Dump
— собрать его
— запустить следующую команду: dia2dump bla-bla.pdb -s бла-бла.pdb | less
— найти свой символ, он должен выглядеть примерно так:
Function : static, [xxxx][0001:xxxx], len = yyy, public: virtual тип класс::имя(типы)
— посмотреть в modules регион, куда загружена длл
— открыть окно дизассемблера.
— ввести в адрес N + M, где N — это начало региона из дредыдущего пункта, M — xxxx из дампа.
— профит

Литература: http://msdn.microsoft.com/en-us/library/x93ctkx8%28v=vs.100%29.aspx

PS: Для глобального надо делать то же самое, но для dll есть готовая утилита, dumpbin /export. Нет, написать имя не получится: скажет "не могу найти символ"

А вообще в этих курсах по быдлотехнологиям как-то много внимания уделяют базам и таблицам, и связыванием их друг с другом. Мне казалось, что времена когда в каждом ларьке писали свою программу складского учёта, несколько прошли, и уже существуют какие-то специализированные решения на этот счёт, а программисты занимаются более осмысленными задачами. Или мне только казалось?

вебдвасполовиной пыщьпыщь

Письмо из кружка ребёнка:


Забота о мобильных пользователях в полный рост. Раметка без фиксированной ширины? Как можно, от этого же типографика пострадает. Надо учиться жить с современными технологиями! Everything at once!

PS: Стоит ли говорить что никакая information in English не follows?

No cleartype

Оказывается, чтобы убрать долбаное мыло, надо... отключить cleartype:





К сожалению, misc-fixed в студии мне заставить работать всё равно не удалось, ну хоть курьер пошёл. Надо посмотреть на работе.

UP: В общем, некоторые шрифты (по случайности они используются в Windows Classic) выглядят без ClearType хорошо, какие-то (которые используются в Aero) - очень плохо, а ClearType их приводит к какому-то одному виду на троечку. Настроить их можно, но к сожалению это работает не везде.

firefox vs bing.com

UP: видимо, оно всегда так было, просто бинг не использует хттпс. Но как-то неаккуратненько.

bing.com uses an invalid security certificate.

The certificate is only valid for the following names:
  ieonline.microsoft.com , *.bing.com , *.windowssearch.com  

(Error code: ssl_error_bad_cert_domain)

www.bing.com uses an invalid security certificate.

The certificate is only valid for the following names:
  a248.e.akamai.net , *.akamaihd.net , *.akamaihd-staging.net  

(Error code: ssl_error_bad_cert_domain)


Бобик сдох?

gitk: more aggressive space ignoring

У меня внезапно образовалась необходимость смотреть диффы, в которых полезные изменения перемешаны с поправленным оформлением (переносами, отступами и тп). diff -w не осиливает игнорировать все из них.

Поскольку разбираться с алгоритмом diff мне не совсем хотелось, а пересобирать потом git под Windows мне не хотелось совсем, я решил ограничиться грязным хаком и пропустить через фильтр уже готовый дифф, перепроверив для каждого ханка, что он содержит значимые изменения. После какого-то числа попыток я понял что всунуть в пайп перловый скрипт не получится (Windows, да), поэтому пришлось сделать это прямо в gitk:

https://gist.github.com/max630/5427780

Разбито на 3 патча потому что первый - это вполне прямолинейный рефакторинг, который, однако, может сконфликтовать с какой-нибудь не той версией, а остальные 2 - это уже новый код. Зачем их 2, я уже не помню.

Это грязно не только по идее, но и по исполнению, так что я даже не буду пытаться предлагать это в апстрим, но если кому покажется интересным - пользуйтесь.

про https сертификаты

Некоторое время назад я поставил расширение к ff Certificat Patrol. Что могу сказать:

* он в целом несколько неправильный. По идее, он должен проходить все подтверждения при соединении, до отправки запроса. Вместо этого он в любом случае скачивает страницу, а параллельно уже извещает о замене сертфиката. То есть если отправлю пароль в прокладку, то он мне сможет только сообщить об этом после. Ну это можно исправить.
* многие сайты занимаются какими-то страннымивещами со свойми сертификатами. Гугль постоянно перевыпускает сертификать, которым до истечения ещё жить да жить. Твиттер и вовсе меняет ЦА каждый день. Подозреваю, он переключает днс с хоста на хост, и на разных хостах не просто разные сертификаты, а ещё и подписанные разными ЦА.
* во многих местах https вообще нахер не нужен. В том же твиттере — я им не пользуюсь, а только смотрю картинки, на которые кто-то сослалася. Да и в гугле он мне нужен только для почты и ввода пароля. Подозреваю, каждому человеку достаточно порядка десятка сайтов, соединение к которым действительно надо защищать. Все остальные просто парят мозг за просто так, включая ложные сообщения об ошибках как выше.

к вопросу о документации rpm

Оказывается, у spec есть макрос %bcond_with, а у rpmbuild — аргумент --with. Где он описан, в каком месте его "хорошей" документации? Нигде. Где-то в недрах вики.

Вот так и всё у них.

не все деньги одинаково полезны

Интересная история про Кипр - вроде не такое большое население, куча бабок через него крутится, куча туристов, а вот - финансовые проблемы. В принципе, когда говорят о "привлечении иностранных денег", из общих соображений ясно что привлекать можно на разных условиях, в том числе и на таких при которых этих денег так никто и не увидит (да ещё и кредитов наберут пропорционально их количеству). Но вот такой наглядной демонстрации я как-то не ожидал.

на смерть google reader

Имею сказать по поводу что вы все (цитирую) "сетеголовые гики". Недавно ещё такой жаловался что не может разобраться в фейсбуке. А в фейсбуке не надо разбираться, надо лайкать. Разбираться — это для задротов.

Список литературы:
http://dolboeb.livejournal.com/2480984.html?style=mine
http://belnetmon.livejournal.com/2252262.html?style=mine

(сам я ридером не пользовался, потому что он слишом аяксовый. Сделал какой-то свой скрипт, живу с ним уже года 3 с половиной. До этого пользовался planet, но она слишком жручая для моей виртуалки)

Certificate Patrol

Кстати всем кто использует firefox и беспокоится о левых ssl сертификатах - рекомендую поставить расширение Certificate Patrol. Оно исправно спамит алертами о том что сайтик поменял сертификат. Иногда можно увидеть интересные вещи - например, гугль только что поменял сам себе выпущенный месяц назад сертификат, которому ещё полгода оставалось. Нафига - непонятно.

HOWTO: boot full-blown debian from chroot

Странно, в гугле и документации initramfs-tools это не описано, может проглядел? Очевидная же потребность.

Read more...Collapse )

Вообще вот эти фокусы с mount мне не нравятся, очень легко остаться без диска если то что написано в man switch_root правда. Но зато всё работает - модули грузятся, иксы запускаются, гном3 свистит и пердит и так далее.

Практическая задача по UI

Разговоры про то что клиент всегда прав, все горазды, а вот практическая задачка: клетка для бегемота, внутри сидит слон. Так было всегда. Теперь проблема — хобот вываливается, может ненароком задеть зрителей. Варианты исправления:

1. пересадить слона в клетку для слона. Но это меняет User eXperience и конфузит старых пользователей (а их много)
2. примотать хобот скотчем, чтобы не болтался
3. отрезать хобот.

Интеграцию студии с vcs дизайнили какие-то законченые дуболомы. Во-первых, используемая vcs прописывается, сука, В ПРОЕКТ (то есть если проект живёт в 2 системах, как в git-svn — он в принципе работать не может у всех). Во-вторых, при всём при этом в настройках самой студии хранится некий "текущий vcs". При открытии проекта он сравнивается с тем что в написано в проекте, и если он не совпадает, выдаётся ... нет, это надо процитировать:

> [Source Control Plug-in]
> The active solution or project is controlled by a different source control plug-in than the one you have selected. If you change the source control plug-in, the active solution or project will be closed.
> Do you want to continue?
> [Yes] [No] [Help]

И, натурально, если выбрать "Yes" — то проект, который ты только что открывал — закроется.

Thou Shalt Not Lie

Кстати, вот это вот модная тема для гит-хейтеров - он врёт! Прямо так и пишут, да: обманывает, нарушает, собака, девятую заповедь. Он должен честно, как на духу всё рассказывать - вот тут программист впендюрил отладочную печать, здесь начал писать какой-то класс, но потом на ревью ему сказали что это неправильно, и он всё откатил и сделал по-другому. Или даже не откатил, а просто оставил задизабленным - пускай полежит, может пригодится кому. Ну устареет оно к тому времени, но это уже детали. А что в истории вместо 2 коммитов с читаемыми комментариями 25 непонятно каких - это, право, такая мелочь. Главное ведь чтобы честно всё было.

бездуховные люди

Оказывается, те, кому не нравится хуячить говнокод на говноязыке с целью повышения прибыли работодателя - "никогда не получали fun" и, нет, этот слог надо цитировать целиком: "Ни разу в жизни ... даже не пытались рассмотривать проект не как средство получения денег, а как своё детище".

При общении с GUI инструментами иногда ощущаешь себя жертвой заговора

$SUBJ

Я сейчас пользуюсь системой треканья багов, в которой нельзя ... скопировать номер бага. Я не шучу, он есть в заголовке окна и всё, больше нигде нет. Можно нажать Ctrl-C в списке багов, тогда в буфере окажется длинная строка, в которой есть этот номер. Если для этого бага были коммиты (там да, всё замечательно интегрировано), можно нажать специальную кнопку, тогда подгрузится диалог из системы контроля версий (тоже графической и в своём роде замечательной), в котором этот номер можно ещё через пару кликов найти в выделяемом виде. Естественно, для нескольких цифр никто этого не делает, а набирает номер вручную, регулярно ошибаясь.

А вы говорите — git неудобный.

вдогонку к http://sorhed.livejournal.com/575908.html

после рабочего дня подремать в автобусе - priceless

Я так думаю, 3 дня в неделю общественного транспорта я могу себе позволить. Надо попробовать.

о бесконечностях

недавний дискусс: http://akuklev.livejournal.com/1086098.html
забавный "парадокс" http://lj.rossia.org/users/neklyueva/1189592.html

Моё мнения как физика: бесконечность это всего лишь абстракция понятия "очень много", и когда люди об этом забывают, начинается какая-то пустопорожняя философия.

Какая-то ваша скала сильно гуманитарная

Как-то она сразу не пошла интуитивно, не могу ухватить логику, кажется бессистемным нагромождением фич. Иногда самые очевидные конструкции внезапно отказываются компиляться с непонятными сообщениями. Поскольку времени на эксперименты и гугление сейчас катастрофически не хватает, решил сгрузить спеку на читалку и тупо прочитать её от начала до конца. (На чтение, впрочем, тоже времени мало, но оно хотя бы есть) Сразу же был вознаграждён бомбой:

Example 1.2.2 The following code designates an anonymous class
new Iterator[Int]
{
private var x = 0
def hasNext = true
def next = { x += 1; x }
}
With an additional newline character, the same code is interpreted as an object creation followed by a local block:
new Iterator[Int]

{
private var x = 0
def hasNext = true
def next = { x += 1; x }
}

Поначалу показалось просто забавным, но наутро проникся юмором создателей языка.

квартира ценой в 200 тысяч

А почему взрослые, казалось бы, люди обращают так много внимания на стартовый платёж телефона с контрактом, называя его "ценой"? Интересно, а стартовый платёж ипотеки они тоже называют "ценой квартиры".

А чо все так переполошились? Кто-то в здравом уме запускает java-аплеты с untrusted сайтов?

hg vs git #2

Вот, кстати, наглядный пример того недостаточно прямые архитектурные решения порождают излишнюю работу. Система бранчей-ссылок и гибкий процесс push/fetch в гите, пусть и немного сложноватые, позволяют на корню исключить проблемы с манипуляцией историей, для решения в которых в меркуриале уже придумали mq, фазы, бекапы и ещё неизвестное число костылей и подпорок.

Illiterate programming

Вчера написал комментарий в студии. Она заботливо предложила его свернуть.

"A дедушка хотел наоборот"

aptitude

На пятый день изучения потрохов aptitude внезапно обнаружил в нём документацию. Почитал про назначения костов, чтобы он совсем уж не игнорировал что у него просят. Получилать такая картина:

> Aptitude::ProblemResolver::Keep-All-Level 40000;
вот тут, похоже, есть проблема. по-моему он не видит различия между удалением запрошенного пакета и просто удалением пакета. По крайней мере я нигде признаков этого не нашёл. То есть да, в простых случаях он не будет предлагать удалить пакет, который я только что просил поставить, но тогда есть риск просмотреть вариант с удалением какого-нибудь завалявшегося пакетика, который не нужен, но мешает сделать что надо. Пока более безопасным мне кажется не трогать это.
> // Aptitude::ProblemResolver::Remove-Level 40000;
> Aptitude::ProblemResolver::Break-Hold-Level 50000;
> Aptitude::ProblemResolver::Non-Default-Level 20000;

PS: может, так сработает:
> Aptitude::ProblemResolver::Remove-Level 20000;
> Aptitude::ProblemResolver::Non-Default-Level 15000;
пока никаких подвохов не вижу, тестовый пример проходит нормально

А ещё тут иногда видно разбитые машины в кюветах. Лежат они подолгу, до нескольких недель. Вот сейчас я езжу мимо одной. Вот тут: http://www.openstreetmap.org/export/embed.html?bbox=24.883537,60.232972,24.888961,60.235385&layer=mapnik&marker=60.23438,24.88602

Сфотать на ходу, одновременно с управлением - никаких шансов. Останавливаться неохота, да и нельзя там, это надо где-то парковку искать поблизости.

об уважении к "врагу"

Куздра (да-да, тот самый, который "против либерализма" вообще и за то чтобы pussy riot засадить на подольше чтобы неповадно было в частности), вывалил какую-то маниловщину на тему "Что мы сделаем с религией КМПВ". Сопроводив это такой припиской:

Разумеется - без каких либо оскорблений - именно как политической программы - "что надо делать". Без каких либо кощунственных плясок на алтаре. C полной серьезностью и уважением - уважением серьезного врага, который должен быть загнан в гетто, а по возможности - как явление - уничтожен.

Поскольку всё остальное не имеет к реальности совсем никакого отношения, реально содержание его поста - это выделенные слова. Недаром куздра в первую очередь побежал за визой к православным - что они скажут? Не обидятся ли?

Ну с куздры взять нечего, но граждане-то ведутся, на полном серьёзе начинают чего-то обсуждать.

Если к жопе приспособить
сопроцессор фирмы Cray,
можно срать в два унитаза
в десять тысяч раз быстрей



Мне интересно. Вот сейчас iPhone 4 html показывает с 131-м серифнутым символoм в одну строку длиной сантиметров 5. Когда прогресс окончательно победит, и экраны станут 600 dpi - он сколько символов будет рисовать?

Я кстати пропустил icfpc. Нет настроения. Новая работа, и без того надо мозги напрягать, да и хаскель уже не приносит столько фана.

интересное про скалу

http://udpn.livejournal.com/78084.html?thread=1002756&style=mine#t1002756

Очень удобно, когда содержательный уровень можно отделить от операционного. В скале это можно реализовать аннотированием кода. Там можно написать код, и отдельно к коду такой каскадный конфиг (как CSS к HTMLю), в котором описать, что вот в таких-то и таких-то местах рекомендуется в качестве ф-ции sort использовать QuickSort, а в таких-то HeapSort, в тех-то местах использовать lazy-эвалюацию, а в других местах наоборот распараллеливаться и считать аргументы заранее, когда execution flow до нужного места ещё не добрался. Такую CSSку удобно писать уже постфактум, прогоняя программу на профайлере и смотря, где бы лучше параллельнуть, где кешнуть, где в массиве в типовом случае элементов много или мало, и вперемешку они там или частично отсортированы.

Поучить её чтоли...

А не обратить ли нам войну с софтверным апартеидом на такое гиковское изобретение как стили в электронный документах? Не знаю, чем руководствовались авторы, когда вставляли это ещё в древние версии Word. Но с тех пор развелось племя недоучек, которые по жизни ничего не умеют кроме как тратить своё время на ковыряние в настройках. Зато они потом хвастаются, как могут нажатием двух кнопок поменять шрифт во всём документе. Вопрос, кому это может понадобиться, не приходит им в голову. Очевидно же, что если человек указал, что в каком-то месте нужен Times 10pt - значит ничего другого там не нужно.

об профессионалов

На выезде на природу случайный сосед по грилю выдал: "а у меня знакомый - профессионально делает шашлык" и т.д., начал пересказывать какие-то секреты. Я после некоторого раздумья спросил - а где знакомый работает? Ну тот конечно поправился, что конечно, не профессионально, просто увлекается.