Алгоритмы → SGVsbG8gd29ybGQh или история base64
Краткая предыстория
Вообще, все началось давно. Настолько давно, что вряд ли остались свидетели holy wars тех дней, когда решалось — сколько же бит должно быть в байте.
Это сейчас нам кажется само собой разумеющимся, что 1 байт = 8 бит, что в байте можно закодировать 256 различных значений. Но когда-то было совсем не так. История помнит и семибитные кодировки, и шестибитные, и даже более экзотические системы (например — ЭВМ «Сетунь», которая использовала троичную логику, то есть один троичный бит — трит мог иметь три, а не два значения, для нее было справедливо соотношение 1 трайт = 6 тритам). Но если оставить в стороне всякую экзотику, то мэйнстримом все-таки были кодировки, в которых 6, 7 или 8 бит в байте.
Шестибитная кодировка (например — BCD) позволяла закодировать в одном байте 64 различных значения, что, как казалось, было вполне достаточно для кодирования алфавитно-цифровых символов, а «лишний» седьмой бит расширял кодировку уже до 128 символов.
Однако скоро восьмибитный байт стал общепринятым.
Разработка → Примеры паттернов в реальной жизни
Хорошая, хоть и старая (97 год) статья в которой приведены примеры применения паттернов в вещах, которые не имеют отношения к разработке. Такой подход отлично иллюстрирует паттерны и делает их более доступными для понимания.
Например отлично показан паттерн Фасад: интерфейсы офисных устройств можно сильно упростить с помощью секретарши.
Или например паттерн Бридж, который показан на примере выключателя которым можно управлять лампочкой, вентилятором или любым другим прибором.
Например отлично показан паттерн Фасад: интерфейсы офисных устройств можно сильно упростить с помощью секретарши.
Или например паттерн Бридж, который показан на примере выключателя которым можно управлять лампочкой, вентилятором или любым другим прибором.
Программирование под *nix → Привет из свободного от libc мира! (Часть 1)
В качестве упражнения я хочу написать программу на С. Достаточно простую для того, чтобы дизассемблировать ее и объяснить весь код самой себе.
Звучит несложно, правильно?
У читателя предполагается наличие опыта компиляции программ и работы в Линуксе. Небольшое умение читать ассемблерный код тоже пригодится.
Звучит несложно, правильно?
У читателя предполагается наличие опыта компиляции программ и работы в Линуксе. Небольшое умение читать ассемблерный код тоже пригодится.
Разработка → Правила программирования Delcam International plc
Автор топика Код, который приятно читать поделился своими правилами для написания хорошего кода, и в конце поинтересовался — «Какие ещё правила вы используете? Как сделать код читаемее?». У меня как раз под рукой есть документ из одной крупной английской конторы на которую я работал несколько лет назад (Delcam International plc), занимающейся разработкой CAD/CAM систем и в которой трудится несколько сотен, если не тысяч программистов из разных стран мира.
Естественно, чтобы организовать эффективную работу такого числа программистов, тем более с разным менталитетом, говорящих на разных языках и находящихся в тысячах километров друг от друга, внутри компании были приняты правила, которых должен придерживаться программист при написании кода. Сотруднику даются эти правила при устройстве на работу, он должен ознакомится с ними, и придерживаться их. Правила касаются множества областей, включая даже элементарные форматирование кода и именование переменных.
Часть из них могут показаться очевидными, часть весьма спорными, часть весьма полезными. Но в любом случае, это опыт крупной компании, и раз они были введены — значит на это были причины. Буду рад, если вы почерпнёте для себя что-то полезное, или внедрите часть из них в своём коллективе и это поможет вам эффективнее работать в команде.
Естественно, чтобы организовать эффективную работу такого числа программистов, тем более с разным менталитетом, говорящих на разных языках и находящихся в тысячах километров друг от друга, внутри компании были приняты правила, которых должен придерживаться программист при написании кода. Сотруднику даются эти правила при устройстве на работу, он должен ознакомится с ними, и придерживаться их. Правила касаются множества областей, включая даже элементарные форматирование кода и именование переменных.
Часть из них могут показаться очевидными, часть весьма спорными, часть весьма полезными. Но в любом случае, это опыт крупной компании, и раз они были введены — значит на это были причины. Буду рад, если вы почерпнёте для себя что-то полезное, или внедрите часть из них в своём коллективе и это поможет вам эффективнее работать в команде.
Блог им. 7workers → «Правильное» тестовое задание для соискателя-программиста
Занимаясь одбором кандидатов на вакансию программиста, столкнулся с проблемой — подобрать хорошее тестовое задание. Цель — увидеть, программист ли передо мной или человек, хорошо знающий фреймворк\язык\технллогию. Поясню — программист, это человек, которые может решить нетривиальную проблему. Сделать сайт-блог, даже e-commerce сейчас является тривиальной проблемой, на это способен любой junior. Natural-born программистдумает по-другому.
под катом образец тестового задания
под катом образец тестового задания
Разработка → Код, который приятно читать
Хороший код
К хорошему коду много требований: он должен быть оптимальным, у него должны быть юнит-тесты, его должно быть легко переиспользовать, он должен соответствовать код-стандарту компании и духу языка. А ещё его должно быть приятно читать.
Я бы хотел рассказать о правилах, которые помогают мне делать код читаемым.
Основное правило
Я считаю, что читаемым является код, в который можно не вчитываться.
То есть, пары-тройки строк дожно быть достаточно, чтобы сказать, что делает класс или метод. Ещё пары-тройки — чтобы примерно сказать, как он это делает.
Прочие замечания
Я заметил, что есть ещё несколько довольно общих правил, которые делают код симпатичнее.
DIY или Сделай Сам → Жесткий диск умер — теперь работает как часы

Когда говорят, что устройство работает «как часы», то подразумевают, что это значит очень стабильно и надежно. Все мы мечтаем, чтобы с нашими «винчестерами» ничего плохого не случалось, но они любят отказывать самым непредсказуемым образом. Один такой свой диск я переделал, так что он теперь буквально работает как часы. Идея сделать устройство посетила после посещения выставок, где видел похожие рекламные девайсы. Мозг сверлила назойливая мысль — «неужели не смогу»?
НЛО прилетело и опубликовало эту надпись здесь.
.NET → Сокращенный генератор C# в стиле Zen Coding
Уверен что много разработчиков слышали про такую вещь как Zen Coding. Если нет — скажу лишь что это методика очень быстро верстать HTML. Лично я ее использую и безумно доволен. (Все мои статьи написаны через zen coding, многие используют лично написанные расширения.) Так вот, пришла идея сделать то же самое на C#. Поэтому давайте потеоретизируем и подумаем, можно ли сделать Zen Coding для C#.
Языки программирования → Популярность языков по stackoverflow
Меня всегда смущал отчет от Tiobe, ну не похож он на правду. Ну хотя бы потому что Delphi на 9 месте, а javascript на 10, т.е. последнее и предпослениее места в top-10. И это в наше то время развития web 2.0, ну явно ведь должно быть в ином порядке. Ну и по остальным языкам все как то подозрительно. А что же на самом деле, что сейчас популярно у продвинутых программистов? А определить оказалось довольно просто, достаточно заглянуть на stackoverflow.com и посмотреть популярность тегов (они там четко к языкам прикреплены, есть куча модераторов отслеживающих правильность тегов)