Search
Write a publication
Pull to refresh
5
0

Специалист по БД

Send message

Признаки плохого программиста

Reading time18 min
Views69K

Неспособность рассуждать о коде


«Рассуждать о коде» значит понимать порядок исполнения инструкций («исполнять программу в голове»), зная, каково предназначение кода.

Симптомы

  • Наличие «волшебного», «вуду» кода или кода, который не имеет никакого отношения к целям программы, но всё равно тщательно поддерживается (например, инициализация переменных, которые никогда не используются, вызов функций, не имеющих отношения к цели, создание выходных данных, которые не используются, и т.д.).
  • Многократные вызовы идемпотентных функций (например, вызов save() по нескольку раз, «чтобы уж точно»).
  • Исправление ошибок написанием избыточного кода, который замещает данные, полученные при исполнении неисправного кода.
  • «Йо-йо код», который конвертирует значения в различные представления, а потом конвертирует их обратно ровно в то же представление, с которого начинали (например, преобразование десятичного числа в строку, а потом обратно в десятичное число, или padding строчки с последующим trim'ом).
  • «Бульдозерный код», который создает впечатление рефакторинга посредством разбития кусков кода на процедуры, которые, правда, затем невозможно использовать где-либо еще (высокая когезия).

Читать дальше →

Обзор двадцати двух бесплатных шрифтов с сайта Open Font Library: 16 шрифтов с кириллицею + 6 орнаментальных и спецсимвольных шрифтов

Reading time4 min
Views62K
Сегодня я упоминал ужé о трудностях, с которыми сталкивается всякий, кто желает разыскать на сайте Open Font Library шрифты с поддержкою кириллицы. Фильтра по языкам нет; поиск по слову «cyrillic», как dimitrymd успел убедиться, находит только десяток шрифтов.

Я ощущаю поэтому, что есть смысл составить да выложить более полный список тамошних шрифтов, имеющих поддержку кириллицы. Порядок шрифтов будет алфавитным:

  1. ConsolaMono
  2. Crimson
  3. Dataface
  4. Designosaur
  5. Didact Gothic
  6. GNUTypewriter
  7. Grana Padano
  8. Jura
  9. Neocyr
  10. NotCourierSans
  11. Old Standard
  12. Pfennig
  13. Press Start 2P
  14. Sansus Webissimo
  15. Triod Postnaja
  16. VDS

«На закуску» я намерен также обозреть полдюжины шрифтов с различными спецсимволами да орнаментами:

  1. Chess
  2. FivefoldOrnamentsEtc
  3. Futhark Adapted
  4. Knots
  5. UniCons
  6. Web Symbols

Читать дальше →

Имена людей и интерфейс

Reading time13 min
Views50K
Пространство рассуждения статьи затрагивает вопросы различия имен людей во всем мире, и то, как это влияет на дизайн форм ввода, баз данных, онтологий информатики и др. в контексте Всемирной Паутины.

image

Заинтересованная аудитория: авторы HTML-контента, разработчики скриптов серверных приложений (PHP, JSP и т.д.), менеджеры веб-проектов и любые другие люди, так или иначе связанные с дизайном форм ввода данных, дизайна баз данных и онтологий, которые затрагивают личные имена людей.

Следует помнить о различиях формирования и традициях употребления имен людей в других странах. Зачастую создатели сайтов или программ одной культуры не учитывают национальные особенности пользователя другой, что заставляет последнего чувствовать себя непривычно, и ставит дополнительные преграды к использованию продукта.

Читать дальше →

GTD для иррационалов на практике

Reading time4 min
Views13K

О чём это я


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

В своей жизни я довольно много писал разных художественных рассказов, полутехнических статей и стихов. Но как большинство из тех авторов, кто пишет сами для себя, публиковал работы для скромной аудитории в пару сотен человек. При этом всегда оставалось ощущение, что мир стал бы намного лучше, если бы меня прочитало не 200, а, например 200,000 человек. Цель вполне ясная и сформулированная. Более того, чтобы увидеть проложенный другими и веками проверенный путь к её достижению, не надо быть семи пядей во лбу. И вот так появилась задача “Написать статью на Хабрахабр”. Именно в таком виде сформулированная, без какой-то конкретной темы, материалов или сроков, задача провисела несколько месяцев в моем списке неотсортированных задач.
Читать дальше →

HP предлагает виртуализацию под ключ

Reading time3 min
Views8.5K
Сегодня многие компании, в которых с помощью решений VMware уже перенесена в виртуальную среду часть серверных приложений, рассматривают возможность виртуализации всей своей серверной инфраструктуры и переноса всех своих приложений, в том числе и критичных для бизнеса, на виртуальные машины. Однако ясно, что этот второй этап внедрения виртуализации будет существенно реализовать труднее, в частности, потребуются сложный расчет конфигурации необходимого оборудования и программного обеспечения, включая лицензирование VMware vSphere. Ошибка в сайзинге может привести к тому, что процессорных ресурсов и памяти серверов окажется недостаточно для обслуживания всех виртуализированных приложений либо компания потратит лишние деньги на покупку серверного оборудования и лицензий.


Читать дальше →

Стоит ли быть «успешным»?

Reading time6 min
Views49K
Как надоели эти тематические статьи о повышении результативности, мотивации и прочей чепухе. Зачем люди их пишут? Чтобы помочь тем, кто запутался в себе? Для тех, кому тяжело сосредоточиться? Вряд-ли это так.

Современная жизнь диктует нам, что все нужно делать быстро, добиваться максимальной эффективности. Непременно нужно быть очень успешным. Нужно двигаться к цели, каждый день, каждый час, ежеминутно. Оставив все лишнее, бросить все силы на достижение результата. Иначе нет смысла жить.
Читать дальше →

Разворачиваем приложение на чистой Убунте: от A до Z

Reading time5 min
Views3.8K
Итак, у вас есть чистая Ubuntu, в консоли открыто ssh-соединение с сервером и консоль вас заманчиво приглашает — «root@my-awesome-host:~#» — и больше ничего нет. А хочется запустить и показать всему миру какое-то рельсовое приложение. Поехали от супа до орехов.

Читать дальше →

Просмотр фильмов на android-устройствах с домашнего сервера

Reading time2 min
Views97K
Здравствуйте, уважаемые хабрачитатели.

Есть у меня скромненький hand-made домашний сервер:
  • Файлопомойка
  • Торрентокачалка
  • Архив фотографий и видео

Работает все это под убунтой и имеет примерно такой конфиг: Intel Core Quad, 4Gb памяти и RAID 5 из 4-х 2TB дисков.
Контент с этого сервера забирают домашние компы (samba), медиаплеер (samba), телевизоры (DLNA). И все не давала мне покоя идея смотреть вновь вышедшие серии сериалов, да и некоторые фильмы, на телефоне, лежа в кровати на сон, так сказать, грядущий. Ноутбук — неудобно ввиду его размера и опасности уронить с кровати в момент непредвиденного засыпания. Перерыл много форумов, программ и т.п., но решения так и не нашел.
Надо делать самому

HTC Rhyme: стильный и элегантный

Reading time2 min
Views41K
Естественный интуитивный дизайн при разработке телефонов HTC всегда выходит на первый план. Функциональность и сценарии использования смартфона прорабатываются до мелочей, но с HTC Rhyme мы решили пойти дальше!

В основе создания Rhyme лежит совершенно иной подход: существует огромная группа потребителей, которые не акцентируются на технологиях, но хотят, чтобы телефон был более персонализирован и органично вписывался в стиль жизни. Нами была разработана линейка уникальных аксессуаров, которые помогут в этом!

Читать дальше →

ARM-микроконтроллеры STM32F. Быстрый старт c STM32-Discovery

Reading time5 min
Views396K
При изучении image любого незнакомого дела, особенно когда речь идет о микроконтроллерах, возникает вопрос — «С чего начать». Ведутся поиски статей по ключевым словам «Getting Started», неизбежно появляется дилема выбора среды разработки и программатора-отладчика. Чтобы помочь вам определиться с ответами на возникшие вопросы, я поделюсь своим опытом в освоении 32-битных контроллеров семейства STM32F от ST Microelectronics.

Выбор контроллера


Вариантов по сути дела было два — STM32F или NXP (LPC1xxx). На микроконтроллеры STM32F мой выбор пал по нескольким причинам.
Читать дальше →

VPN-сервер в стиле how-to (pptpd+mysql+radius) на CentOS6

Reading time9 min
Views38K
image Хотя статьи в стиле how-to и не очень комментируемые, и в основном не с положительными комментариями, однако, именно их, больше всего добавляют в закладки.
Здесь я постараюсь описать процесс установки и настройки VPN-сервера на CentOS6 с пользователями в MySQL и авторизацией через радиус для шифрованного соединения по ms-chap-v2 и mppe.

Преамбула

Откуда берутся данные статьи? Все просто. Когда мы ищем соискателей работы, например, на должность системного администратора, то после отбора кандидатов на предварительном собеседовании, состовляются тестовые задания, реализуются своими силами, а потом предлагаем их решить соискателям. Для исполнения заданий, соискателю предоставляется виртуальная машина, доступ в интернет, и определенное время. Время расчитывается просто — наша реализация *2. При этом, Вы можете считать, что все необходимые решения (how-to) можно найти на просторах интернета, однако, мы учитываем это, и поэтому не берем готовых решения, а состовляем и решаем предварительно их сами, на свежих дистрибютивах. Кстати, бывают случаи, когда мы натыкаемся на определенные проблемы при реализации (маленькие незадокументированные шалости разработчиков), и в случае, если кандидат идет правильным курсом, но попадает в затык именно на этой проблеме, подсказываем найденное нами, её решение.
Читать дальше →

Секрет объектно-ориентированной разработки в Rails

Reading time10 min
Views2.7K
Сегодня мы предоставим вашему вниманию перевод поста Стива Клабника (Steve Klabnik), известного разработчика, приверженца Ruby, одного из победителей Ruby Hero Award этого года. Что это за награда? Она присуждается победителями прошлого года тем участникам сообщества, которые наиболее проявили себя: создали значимый обучающий контент, разработали плагины и гемы, участвовали в проектах с открытым кодом. Такая награда была создана для того, чтобы отметить наиболее проявивших себя людей и дать им признание, которое они заслуживают.
Пообщаться со Стивом можно будет на конференции в Киеве RubyC 5-6 ноября этого года.


Я часто говорю людям, что учил Ruby через Rails. Это один из худших способов, но к тому времени я уже выучил столько языков программирования, что это не мешало мне. Тем не менее, это дало мне слегка искаженное ощущение того, насколько тщательно проектировать классы, необходимые для Rails приложений. К счастью, я пристрастно просматриваю код, написанный другими, и заметил, что есть одна важная вещь, которая встречается в разработках у многих уважаемых мною людей.

Мне кажется, эти люди также считают эту вещь уникальной. Это не когда люди, не умеющие писать хороший код, стараются, но все равно получается плохо. Это как флаг, сигнал. Теперь, когда я вижу, как кто-то внедряет эту вещь, я сразу думаю: «он шарит». Возможно, я слишком сильно доверяю своему чувству, но эта продвинутая техника разработки предлагает множество взаимосвязанных преимуществ вашим Rails приложениям, легко применима и ускоряет тестирование на порядок или больше. К сожалению, для многих начинающих Rails разработчиков это неочевидно, но я хотел бы, чтобы вы писали код лучше и вот я здесь, чтобы, с вашего позволения, «раскрыть секрет» и поделиться этой мощной техникой с вами.

Читать дальше →

Re: Командная строка на службе фотографа-линуксоида

Reading time3 min
Views3.5K
Недавно опубликована статья «Командная строка на службе фотографа-линуксоида», где автор пишет о решении разных типовых задач, встающих перед фотографом-линуксоидом, но он рассмотрел явно не всё.

Первая, а точнее, нулевая задача — скопировать изображения. Казалось бы, в ней нет чего-то такого, что бы подлежало оптимизации и автоматизации: всегда можно нажать F5 в mc либо перетащить файлы мышкой или же воспользоваться каким-нибудь менеджером фотографий наподобие digiKam. Можно — но не нужно: слишком много лишних движений. Фотографу-линуксоиду (а точнее, линуксоиду, время от времени занимающемуся фотографией) обычно надо лишь забрать фотографии с карты памяти, аккуратно сложить их на жёсткий диск, рассортировав, например, по времени съёмки и, если лишние буквы раздражают взгляд, убрать их.

Другая задача, о которой говорили в комментариях — пакетное уменьшение фотографий и их подписывание. Один из методов — использовать ImageMagick, к которому доступны различные интерфейсы: как интерфейс командной строки (программы convert, mogrify, montage), так и API для различных языков программирования. В случае с перлом — модуль Image::Magick. ImageMagick позволит и уменьшить фотографию, и подписать её.

Я подобные задачи автоматизировал следующим образом:
Читать дальше →

Как перестать беспокоиться и начать работать?

Reading time9 min
Views29K
В прошлый раз, когда мы рассказывали о работе нашей команды, многих интересовали подробности организации работы непосредственно разработчиков, о чём мы сейчас и расскажем. Не стоит ожидать «срывов покровов» и открытий, ведь всё, что делают разработчики ни раз описывалось и обсуждалось, но то, что мы делаем в совокупности в реальных крупных проектах, делается не так уж часто (честно говоря, я этого вообще больше нигде не видел). То есть ожидать-то не стоит, но «срывы покровов» произойдут :)

Реальность такова, что Agile без правильных инженерных практик очень быстро закончится. Если вы не будете прилагать усилия, которые гарантируют высокий уровень качества разработки и состояния системы в целом, то по мере усложнения проекта контроль будет быстро утрачен. В результате сделать всё, что запланировано в итерации, у вас не получится, а о значимом релизе (значимый — значит, с какой-то новой функциональностью, которая будет доступна пользователям, а не просто рефакторинг) раз в месяц вы будете только мечтать, потому что стабилизация важного релиза будет занимать гораздо больше, чем месяц.

При правильном подходе разработка новой функциональности может происходить довольно быстро и фокус тут в том, как не сломать при этом то, что было сделано раньше или же быстро понять, что именно ты сломал, и быстро это исправить. Каждый раз тестировать все детали и нюансы вручную очень долго и неэффективно, ведь в Эльбе сегодня уже более 400 «экранов». И проблема не только в том, что тестеры должны все это проверить вручную — очень много времени уходит на сценарий «тестер добавил баг — разработчик исправил баг — тестер проверил и закрыл/переоткрыл баг». Можно долго рассуждать о том, как трудно сохранить быстрорастущую систему в стабильном состоянии, почему код превращается в гавно, почему страшно делать исправления и никто не берет на себя смелость сказать дату релиза даже с точностью до месяца (потому что это было бы безответственно), но гораздо интереснее узнать о том, как сделать так, чтобы было хорошо.

Читать дальше →

Web Symbols

Reading time1 min
Views6.3K
image

У каждого дизайнера наступает момент, когда ему надоедает заново рисовать одинаковые элементы на сайтах. Например, иконки социальных сетей или стрелочки для галерей. Также, технологам надоедает каждый раз нарезать «гиф» или «пнг» одного и того же элемента.

Чтобы упростить себе эту работу мы сделали шрифт, в котором каждая буква — символ (как правило, часто используемый).

Ну и собственно почему-бы им не поделиться со всеми?

Web Symbols

Бесплатные книги

Reading time3 min
Views60K
Несколько книг по разным темам, которые находятся в открытом доступе.

Основы программирования
Читать дальше →

Fido + BBS на Ubuntu 11.04 Server

Reading time4 min
Views8.9K
Synchronet BBS logo
В далёкие времена, когда интернет у простых студентов и школьников был либо явлением редким, либо flat rate (читай — после двух ночи) — а иногда и на двоих (читай — после пяти утра), за бутылку “Степана Разина” можно было подключиться к Fido. А за две — так вообще к CM боссу, т. е. круглосуточному.
Фидо — сеть, созданная анархичным гением Тома Дженнингса и разросшаяся в начале 90-х до нашей страны, стала для многих отечественных гиков основным способом общаться. Стоит отметить, что многие информационные новшества развивались или даже зарождались именно в фидонете: статусы (“now playing” из винампа в оригине), форумы (эхи), файлобмены (фэхи), блоги (локалки), магазины (даже с доставкой), онлайн игры (на ббсках), башорг (HUMOR.FILTERED) и пр. И при этом не нужно было хранить кучу паролей, фильтровать горы спама, а работа эх не зависела от “пожаров” на хостинге, ибо была в определённой степени децентрализована. И, что интересно, все — от мала до велика — друг к другу на “ты”.
Тем не менее, то время, когда каждый СисОп знал какая у него АТС — декадно-шаговая или координатка и когда CPS (ЦПС) более 3000 считалось круто, уже прошло… Сейчас совсем необязательно по всей квартире искать лишние “шипящие” скрутки в телефонной линии, запускать непонятные фоссил драйверы, и вводить мораторий на снятие телефонной трубки после полуночи. Фидо можно организовать и по IP на своём домашнем сервере.
Зачем? ...Just for fun.

Под катом: ставим Fidogate + binkd + Synchro BBS на Ubuntu 11.04 Server (amd64).
Читать дальше →

Functional thinking: Thinking functionally, Часть 1

Reading time12 min
Views15K
Давайте на мгновение представим, что Вы — дровосек. И благодаря своему лучшему топору в округе, вы являетесь самым продуктивным дровосеком в лагере. Но однажды появляется некто, начинающий расхваливать достоинства новой парадигмы в рубке леса — бензопилы. В силу убедительности продавца, Вы покупаете бензопилу, но не знаете как она работает. Прилагая неимоверные усилия, пробуете вырвать или раскачать дерево, применяя на практике свою новую парадигму. И быстренько делая вывод, что эта самая новомодная бензопила — ерунда, возвращаетесь к привычному делу — рубить лес топором. А затем кто-то приходит и показывает как заводить бензопилу.

Эта история может показаться Вам знакомой, поставив функциональное программирование на место бензопилы. Проблема в совершенно новой парадигме программирования — не изучение нового языка. Более того, синтакс языка — это всего лишь детали. Вся тонкость же — научиться мыслить иначе. Это то, почему я оказался тут — заводящий бензопилы и “функциональный” программист.

Итак, добро пожаловать в Functional thinking. Эта серия исследует предмет функционального программирования, но не несет исключительной направленности описать функциональные языки. Как я покажу дальше, написание кода в функциональном стиле касается дизайна, компромиссов, разных повторно используемых кусков кода и служит основой для иных догадок. Насколько это окажется возможным, я попытаюсь показать концепции функционального программирования в Java (или близких к Java языках) и перейду к другим языкам, чтобы осветить возможности, отсутствующие на данный момент в Java. Я не полезу сразу в дебри, рассказывая о довольно необычных вещах, таких как монады (monads). Напротив, я постепенно проведу Вас через новый путь мышления.

Эта и пара следующих частей выступят в роли быстрой экскурсии по предметам, связанным с функциональным программированием, включая базовые концепции. Некоторые из этих концепций в дальнейшем будут рассмотрены более детально в то время, как я буду постепенно расширять контекст применения на протяжении всей серии. В качестве отправной точки нашей экскурсии я покажу Вам две разные реализации решения задачи. Одна написана в императивном стиле и другая — с некоторыми функциональными особенностями.
Читать дальше →

Практика радиосвязи, как она есть — взгляд изнутри

Reading time5 min
Views16K
После прочтения «свежеопубликованной» практики радиосвязи, как она есть, возникли мысли по поводу того, что стоит поделиться своим опытом радиолюбительской связной практики.

С 2004 года практически ежедневно сталкиваюсь со связной техникой ( если раньше это было увлечением, то теперь стало хлебом), как КВ так и УКВ.

УКВ связь (до 1 ГГц), без извращении (использование отражения радиоволн от метеорных потоков, луны и тд.), выглядит просто: дальность связи прямо зависит от мощности передатчика и высоты подвеса антенны.
КВ связь — более неординарное явление, поскольку радиоволна, в зависимости от условии, может несколько раз огибать землю, а может и «интермодулироваться» грозовыми разрядами, если на трассе между собеседниками идет гроза. А может, опять-таки в зависимости от условий (а в частности, от направления антенны), войти под критическим углом в ионосферу и уйти в бесконечно далекий космос…
Читать дальше →

Опыт взаимодействия и восприятие цвета пользователем

Reading time8 min
Views28K


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

Я считаю, что существует некоторое влияние культуры на выбор и использования цвета, и при работе над дизайном сайтов необходимо принимать во внимание и это влияние, но, также очевидно, что существуют некоторые идеи, которые не зависят от определенной культуры.

Сегодня я хочу рассмотреть вопрос выбора цвета, который, как я предполагаю, мы все связываем с определенной реакцией — например, цвет успеха, цвет неудачи, и какой выбор цвета вы ожидаете увидеть при заполнении полей регистрации, когда вы делаете всё правильно или неправильно. Какой цвет приходит вам на ум, когда вы думаете про «успех»? Какой цвет приходит вам на ум, когда вы думаете о каком-то неправильном действии?

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

Когда вы пройдете вышеуказанный тест (прим. на английском), оставьте, пожалуйста, свой комментарий в конце данного поста и поделитесь своими мыслями по связке цвета и дизайна. А дальше мы с вами посмотрим на результаты сравнения нескольких популярных сайтов, и на правила, которым они следуют, и кое-чему научимся из теста, который вы только что прошли.

Узнать больше и просмотреть результаты тестов

Information

Rating
6,810-th
Location
Екатеринбург, Свердловская обл., Россия
Date of birth
Registered
Activity

Specialization

Fullstack Developer, Database Developer
ASP.NET Web API
PostgreSQL
Git