Pull to refresh
3
0
Андрей Кутейко @andy128k

User

Send message

Ненастоящие сеньор-девелоперы, или почему годы опыта ни о чем не говорят

Reading time 6 min
Views 141K
Опытный программист из Торонто Мэтт Бриггс так любит свою работу, что говорит: «я бы писал код, даже если бы это было нелегальным». А когда он опубликовал в своем блоге пост о джуниорах, мидлах и старших разработчиках, то собрал больше сотни восхищенных комментариев. Мы в Alconost тоже восхитились и перевели эту статью для вас.

Мы работаем в странной индустрии. Потребность в разработчиках здесь значительно выше, чем кадровое предложение. Эта проблема существует многие годы, и со временем она становится острее.

Мы испытываем серьезную нехватку талантов, хотя индустрия довольно молода. Большинство софтверных проектов проваливаются, и практически все превышают бюджет. А лучшая идея, которую могут предложить сильнейшие умы, сводится к «Есть несколько стандартных способов решения подобных проблем, но наши решения часто не срабатывают. Единственное, что можно сделать — это попробовать и посмотреть на результат».

Реальность такова, что под «старшим разработчиком» понимается человек, который ваяет код более 3 лет. Его ставят на руководящую позицию, и обычно все заканчивается ожидаемо плачевно.

На самом деле, попытка оценивать людей временными интервалами – слишком упрощенный способ для таких тонких материй, как знание и профессиональный опыт. Но дела обстоят именно так. И если продолжать классифицировать специалистов подобным образом, то самое время нашей индустрии брать тайм-аут. Есть разница между человеком с 10-летним опытом, и тем, кто за то же время стал опытнее в 10 раз.


Постер из сериалa «Компьютерщики»
Читать дальше →
Total votes 111: ↑104 and ↓7 +97
Comments 102

Google Plus, Facebook, Twitter — читаем в RSS агрегаторе

Reading time 2 min
Views 49K
Если вы боитесь социальных сетей, но хотели бы знать, о чем там пишут известные люди – используйте для этого технологию RSS. Как достать ссылки для подписки в RSS?

Facebook
Самый интересный вариант — FB RSS Facebook application

Фейсбук в этом плане весьма открыт, кроме RSS фидов формата 2.0 разберется и с Atom. Все что вам нужно, это знать ID профиля или страницы.
Пример, сообщетсво — English is Fun

В адресной строчке заменяем www на graph — вместо http://www.facebook.com/EnglishIF?fref=pb пишем http://graph.facebook.com/EnglishIF?fref=pb
В сгенерированном коде находим строку с «id»: " 384707561542391 ".
(ID можно также найти с помощью findfacebookid.com)

Используем шаблон www.facebook.com/feeds/page.php?format=rss20&id=, например www.facebook.com/feeds/page.php?
format=rss20&id=384707561542391 и подписываемся

Twitter
Тут все еще проще.
Скажем, собираемся читать @BreakingNews
Используем шаблон api.twitter.com/1/statuses/user_timeline.rss?screen_name=, пример api.twitter.com/1/statuses/user_timeline.rss?screen_name=BreakingNews. Готово, можем подписываться.

Если хотим читать фиды по определенному слову (скажем слово Android), добавляем к адресу search.twitter.com/search.atom?q=Android.
Если хотим читать фиды по хештегу, добавляем к адресу хештег #Android — search.twitter.com/search.atom?q=%23Android. (Символ (#) меняем на %23).

Google+
Проще всего использовать gplus-to-rss.appspot.com.
Нужно знать ID Страницы или профиля. На Google+ найдете его прямо в адресной строке, например страница +ru.android – в строке plus.google.com/u/0/communities/110130446304043859186 — 110130446304043859186 и есть ID
Добавляем в URL gplus-to-rss.appspot.com/rss, в нашем случае gplus-to-rss.appspot.com/rss/110130446304043859186.

Переведено с чешского источника

Update

ВКонтакте
Для генерации RSS-фида вам нужно «скормить» ссылку на профиль или открытую группу сервису ВКонтакте RSS — vkontakte-feed.appspot.com
Total votes 54: ↑45 and ↓9 +36
Comments 30

Быстрое целочисленное деление на константу

Reading time 3 min
Views 9K
На всех CPU операция деления выполняется сравнительно медленно, с этим ничего поделать нельзя. Но если делитель константа, то деление можно заменить на умножение на какую-то другую константу (обратное число, которое вычисляется во время компиляции). Тогда код будет чуть быстрее работать (и потреблять меньше энергии). Такую оптимизацию делают многие компиляторы (gcc, MSVC), но оказывается, многие разработчики не знают, как вычисляется сомножитель, а это не тривиально.

Дальше будет рассказано, как вычисляется сомножитель.

Читать дальше →
Total votes 36: ↑34 and ↓2 +32
Comments 8

Еще раз об архитектуре Android приложения или джентльменский набор библиотек

Reading time 6 min
Views 57K
Вот надумал написать обзор библиотек с помощью которых легко и удобно писать приложения под Android.
Список вырисовывается такой:

Если заинтересованны прошу под кат.
Читать дальше →
Total votes 69: ↑62 and ↓7 +55
Comments 82

«Lisp in Small Pieces» на русском

Reading time 3 min
Views 33K
( Parentheses ) – Elegant weapons, for a more civilized ageЭта книга французского профессора Кристиана Кеннека об интерпретаторах Лиспа и Scheme довольно хорошо известна в англоязычном мире. Даже пару раз проскакивала на Хабре. Но в русскоязычном сообществе Scheme чаще всего ассоциируется со «Структурой и интерпретацией компьютерных программ» (aka SICP). Это хороший учебник для новичков, где целых две главы посвящены реализации используемого языка, однако в нём не рассматривается реализация довольно интересных и важных для Лиспа вещей вроде макросов, продолжений, динамических вычислений.

Однажды «Lisp in Small Pieces» попался мне в руки, и через несколько десятков страниц я осознал, что подобному бриллианту негоже пропадать в безвестности. А так как лучший способ получить больше адептов в секту популяризовать иностранную книгу — это перевести её на родной язык целевой аудитории, то этим я и занялся вместо того, чтобы нормально читать. Наконец, перевод, вёрстка и вычитка были завершены; результаты усилий представляются вашему вниманию.

Внутри читателя ожидают:
  • более 37000 скобок!
  • разбор по косточкам семантики всех конструкций Scheme, а также его родственников;
  • в том числе разбор его денотационной семантики — формального математического описания языка в терминах лямбда-исчисления;
  • 11 интерпретаторов и 2 компилятора (в машинный код описываемой там же VM и транслятор в код на Си);
  • объяснение сути рекурсии, замыканий и окружений, продолжений и стека вызовов, реализации макросов и метаязыков, а также чуть рефлексии и самомодифицирующегося кода;
  • множество экскурсов в историю Лиспа и причины принятых решений в дизайне языка;
  • собственная CLOS-подобная объектная система автора (и её реализация, разумеется);
  • время от времени возникающее чувство: «Да это же X из языка Y»;
  • список литературы по теме на 230 наименований.
В общем, отличный учебник по основам реализации языков программирования, с которым стоит ознакомиться не только любителям скобочек.
Ещё чуть-чуть и ссылки на PDF и EPUB
Total votes 55: ↑52 and ↓3 +49
Comments 18

Интеграция wysiwyg редактора с Django. Обзор

Reading time 4 min
Views 42K
Одно из самых частых требований заказчика — wysiwyg редактор в админке. Wysiwyg редактор имеет (как правило) интуитивно понятный интерфейс и позволяет пользователям, не знающим html, подготовить текст для размещения на сайте. Редакторы позволяют: форматировать текст, вставлять изображения и таблицы, создавать списки и много другое. Но имеют и свои минусы, самый главный из них, пожалуй, большое количество лишнего html кода.
На сегодняшний день существует большое количество различных wysiwyg редакторов и приложений для интеграции этих редакторов с django. Сегодня я расскажу про самые популярные.
Помимо собственно разметки текста, на практике важными характеристиками wysiwyg редактора для клиента являются — удобная вставка изображений и перенос отформатированного текста из сторонних источников (Word, веб-ресурсы). Важно чтобы при переносе отформатированного текста редактор удалял стили, которые могут конфликтовать со стилями сайта, например, шрифт текста. Во время обзора приложений особое внимание будет уделено этим двум характеристикам.
Читать дальше →
Total votes 19: ↑17 and ↓2 +15
Comments 8

Создание расширений в PostgreSQL

Reading time 20 min
Views 22K

Здравствуйте, хабрачеловеки! Темой этой статьи будет создание расширений для PostgreSQL. В качестве примера, мы реализуем небольшую библиотеку для работы с 3D векторами. Параллельно будут рассмотрены пользовательские типы, операторы и приведения типов. Не будет лишним ознакомися с этим материалом, так как реализация хранимых функций будет на языке C. Надеюсь, друзья слонов помогут скрасить серый технический текст статьи.
Подробней
Total votes 22: ↑21 and ↓1 +20
Comments 0

Процедурная генерация планов помещений

Reading time 7 min
Views 72K

Что делает крупный разработчик игр, когда ему нужно состряпать много помещений для игрового мира? Нанимает кучу художников. Что делает ленивый/бедный/одинокий разработчик игр в такой же ситуации? Пишет процедурный генератор, который выполняет за него всю грязную работу.

По процедурной генерации планов помещений есть много, очень много статей. Вот ещё пяток ссылок на статьи. Только исходников ни к одной из них нет.

В этой статье я расскажу о том, как я реализовал на Unity3d один простой метод генерации, который приводит к хорошим результатам и легко модифицируется. С картинками и исходниками.
Читать дальше →
Total votes 99: ↑97 and ↓2 +95
Comments 29

Краткий очерк истории Lisp машин

Reading time 5 min
Views 16K
Привет, Хабр!

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

Да, на свете было мало машин с аппаратной поддержкой лямбда исчисления — около 7000 штук в мире по состоянию на 1988 год. А сейчас гораздо меньше, конечно же. На самом деле Лисп машины сыграли довольно сильную роль в истории информационных технологий. Благодаря этим странным компьютерам мир получил такие технологии, как лазерная печать и многооконный GUI.

Щелк
Total votes 29: ↑26 and ↓3 +23
Comments 6

Делаем микросхемы дома — часть 3

Reading time 6 min
Views 200K
Прошло чуть больше года после предыдущих статей о моем проекте создания микросхем дома (1, 2), люди продолжают интересоваться результатами — а значит пора рассказать о прогрессе.

Напомню цель проекта: научиться изготавливать несложные кремниевые цифровые микросхемы в «домашних» условиях. Это никоим образом не позволит конкурировать с серийным производством — помимо того, что оно на порядки более совершенное (~22нм против ~20мкм, каждый транзистор в миллион раз меньше по площади), так еще и чудовищно дешевое (этот пункт не сразу стал очевиден). Тем не менее, даже простейшие работающие микросхемы, изготовленные в домашних условиях будут иметь как минимум образовательную и конечно декоративную ценность.
Читать дальше →
Total votes 244: ↑242 and ↓2 +240
Comments 53

Cинтаксический сахар для PHP

Reading time 4 min
Views 7.1K
Только ленивый, точнее, ну очень ленивый не скажет про PHP пару ласковых. Стоит мимолётом покритиковать разработчиков за то, что больше половины попыток исправить ситуацию с фаршированием стандартной библиотеки, несогласованности и отсутствием того, что очень сильно понравилось в *подставить свой любимый язык* только её (ситуацию) ухудшают, а те, что влияют положительно — не доработаны; Конечно же это провокация и ведёт к неизбежному холивару, но давайте постараемся избежать этого. Из довольно продолжительных размышлений на эту тему и родилась одна затея…

Скажите, а ведь вы хотите что-то изменить в языке, поправить? Знакомясь с новыми языками и подходами, лично у меня — эта мысль крепла. Я испробовал довольно много подходов, начиная от попытки написать собственный интерпретатор, не обладая достаточными знаниями — попытка провалилась, заканчивая переписыванием php исходников (не интерпретатора, а самих *.php файлов) — вначале нативный интерпретатор парсит изменённые исходники, затем транслирует в код\сохраняет данные и уже их интерпретирует, но, добившись определённых результатов — и эта попытка была погребена благодаря своему неудобству и «костылеобразности». И, уже почти разочаровавшись в этой затее — мне помог докладчик на DevConf (если не ошибаюсь — Александр NightTiger), сам того не подозревая. Доклад был про аспектно-ориентированное программирование и одной из просьб докладчика, которая и подтолкнула меня на правильный путь, была: «Поднимите руки те, кто знает про php фильтры».
Читать дальше →
Total votes 24: ↑14 and ↓10 +4
Comments 22

Dater — определяет часовой пояс, локализует и форматирует время в PHP

Reading time 4 min
Views 22K


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

А что если хочется просто несколько строчек кода, и чтобы весь остальной код никогда не узнал, что данные клиенту нужно отдавать в другом часовом поясе, и что в данных пришедших от клиента время может быть указано с часовым поясом отличным от серверного? Для решения этой и многих других задач, сегодня я расскажу вам про одну лаконичную и функциональную библиотеку для PHP.

И так, встречайте — Dater, и его основные возможности:

  • Биндинг форматов
  • Локализация текстов и форматов
  • Расширение списка опций форматирования
  • Автоопределение часового пояса
  • Конвертация времени с учётом часового пояса
  • Автоматическая конвертация времени в $_GET, $_POST, $_REQUEST с учётом часового пояса
  • Автоматическая конвертация часового пояса в шаблоне отправляемых данных
Читать дальше →
Total votes 41: ↑34 and ↓7 +27
Comments 92

Загадка выпадающего списка «Амазона»

Reading time 2 min
Views 191K
Бен Кэменс обнаружил, что в выпадающем списке Shop by Department на сайте «Амазон» ховер-эффект происходит очень быстро, абсолютно без какой-либо задержки. Тем самым происходит нарушение старого, выработанного ещё в 90-х годах прошлого века правила: перед отображением пункта подменю необходим так называемый гистерезис, запаздывание.



Запаздывание необходимо не только для того, чтобы сберечь ресурсы машины пользователя, но и по соображениям юзабилити: если не добавить задержку, то переводить курсор мыши на выпавшее подменю будет неудобно, придётся вести его сначала горизонтально в меню, не задевая другие пункты, и лишь после выбирать нужный подпункт.
Читать дальше →
Total votes 558: ↑548 and ↓10 +538
Comments 90

GPS и карты: смещённые координаты в Китае

Reading time 2 min
Views 110K
Так как я работаю в картографическом сервисе, то недавно я сделал для себя открытие, что все координаты в Китае смещенны по секретному алгоритму. Я собрал немного интересных историй и информации об этом факте.


Есть только граница Китая в этом мире heremaps.cn

Далее немого теории и истории про пробежки, навигацию и спутниковые снимки
Total votes 141: ↑137 and ↓4 +133
Comments 236

Ежегодный отчет Мэри Микер о трендах в сети: Доля поставок Android+iOS растёт (45% против 35% у Windows)

Reading time 1 min
Views 40K
image
Мери Микер, одна из самых влиятельных аналитиков кремниевой долины (партнер в венчурной фирме Kleiner Perkins Caufield & Byers), 3 декабря сделала знаменитый ежегодный отчёт о трендах в интернет-отрасли (год назад о нем уже сообщали на Хабре). По мнению издания Business Insider, его должны прочитать все, кто работает в сфере IT и разработки ПО, или интересуется технологиями.

Основная идея отчета — о том, что мобильные устройства доминируют и разрыв между ними и ПК становится всё больше.

Один из самых впечатляющих слайдов показывает, что пользователи покупают всё больше устройств на базе Android и IOS вместо Windows: Android + IOS занимают 45%, а Windows 35%, и доля Windows стремительно уменьшается.

Дополнительно, по теме:
Android — это новая Windows?
Читать дальше →
Total votes 49: ↑35 and ↓14 +21
Comments 183

Рекомендательные системы: теорема Байеса и наивный байесовский классификатор

Reading time 4 min
Views 61K
В этой части мы не будем говорить о рекомендательных системах как таковых. Вместо этого мы отдельно сконцентрируемся на главном инструменте машинного обучения — теореме Байеса — и рассмотрим один простой пример её применения — наивный байесовский классификатор. Disclaimer: знакомому с предметом читателю я вряд ли тут сообщу что-то новое, поговорим в основном о базовой философии машинного обучения.

image
Читать дальше →
Total votes 25: ↑22 and ↓3 +19
Comments 9

Основы Linux от основателя Gentoo. Часть 3 (2/4): Модель прав доступа

Reading time 10 min
Views 68K
Второй отрывок третьей части серии руководств Linux для новичков. В котором вы сможете узнать, об одном из основных средств обеспечения безопасности в Linux. А именно, правах доступа и модели владения файлами.
Читать дальше →
Total votes 98: ↑96 and ↓2 +94
Comments 10

Как собрать бинарный deb пакет: подробное HowTo

Reading time 15 min
Views 216K
Сегодня я расскажу на абстрактном примере как правильно создать *.deb пакет для Ubuntu/Debian. Пакет мы будем делать бинарный. Пакеты, компилирующие бинарники из исходников здесь не рассматриваются: осилив изложенные ниже знания, в дальнейшем по готовым примерам можно понять суть и действовать по аналогии :)

В статье не будет никакой лишней возни «вручную»: формат пакета эволюционировал в достаточно простую, а главное — логичную структуру, и всё делается буквально на коленке, с применением пары специализированных утилит.

В качестве бонуса в конце статьи будет пример быстрого создания собственного локального репозитория: установка пакетов из репозитория позволяет автоматически отслеживать зависимости, и конечно же! — устанавливать всё одной консольной командой на нескольких машинах :)

Для тех, кто не хочет вдаваться в мощную систему установки софта в Linux, рекомендую посетить сайт проги CheckInstall: она автоматически создаёт deb-пакет из команды «make install» ;) А мы вместе с любопытными —
поехали дальше!
Total votes 73: ↑63 and ↓10 +53
Comments 40

Патчим всё, что ни попадя или Open source в действии

Reading time 5 min
Views 3.7K
Возможно, многие сталкивались с ситуацией, когда программа или библиотека из дистрибутива не содержит некоторой (нужной вам) функциональности, которая была добавлена в следующей версии. Или содержит баг, который был исправлен в следующей версии (или его исправление не было включено в основную ветку), а в репозитории вашего дистрибутива всё ещё содержится старая версия.

Именно с таким багом столкнулся я, а также все пользователи редактора JuffEd (новая версия которого, кстати, вышла на днях), использующие в качестве рабочего окружения среду GNOME под Linux. Баг этот заключается в том, что при использовании автокомплита его окошко появляется на мгновение, после чего пропадает, «унося» за собой фокус. На данном примере я покажу, как можно самостоятельно патчить программы из дистрибутива.
Читать дальше →
Total votes 28: ↑25 and ↓3 +22
Comments 28

Information

Rating
Does not participate
Location
Донецк, Донецкая обл., Украина
Date of birth
Registered
Activity