Pull to refresh

One Swipe Offer — наш код ищет пару на дэйтинг-сервисах

Reading time 1 min
Views 1.3K
М.Видео-Эльдорадо corporate blog IT career

Привет!

В М.Видео-Эльдорадо запустили проект «One Swipe Offer», приуроченный к 14 февраля – Дню всех влюблённых и Дню компьютерщика. Наш код в образе девушки и юноши ищет себе пару на сервисах знакомств, чтобы при взаимной симпатии пригласить на встречу и сделать оффер.

К празднику мы зарегистрировали в дейтинг-приложениях Tinder и Bumble мужской и женский профили своего Naked Code – специально для проекта «оголили» фрагмент действующего кода из продукта «М.Каталог».

IT-специалисты, которые свайпнут Naked Code, познакомятся с нашим кодом. Общение напоминает обычное онлайн-знакомство, где каждый задает вопросы, чтобы узнать партнера и убедиться в правильности свайпа. В данном случае вопросы имеют IT-направленность. При взаимной симпатии прилетит приглашение на встречу с рекрутерами 18 февраля для продолжения знакомства.

Тех, кто не пользуется сервисами знакомств, ждет чат-бот в Telegram с вопросами от IT-лидов М.Видео-Эльдорадо - @NakedCode_Bot.и также приглашение познакомиться лично.

В прошлом году мы использовали дейтинг-формат, запустив к 14 февраля чат-бот в Telegram «День влюблённых компьютерщиков», которым воспользовались около 1 200 человек, 60 потенциальных кандидатов оказались на «свидании» с тимлидами.

Читать далее
Total votes 7: ↑6 and ↓1 +5
Comments 2

Преформатированный текст в хабратопиках

Reading time 1 min
Views 806
Habr
Доброе время суток.

Хотел написать хабрапост в персональный блог и обнаружил что html-тэги pre и code не поддерживаются. Есть ли какая-то альтернатива? Или я что-то пропустил? :)
Total votes 12: ↑9 and ↓3 +6
Comments 1

Победимый баг (отображение ключевых слов в ГуглоАналитике)

Reading time 1 min
Views 504
Lumber room
Используя новую версию Аналитику Гугла для сбора статистики по сайту, обнаружил небольшую, но малоприятную ошибку,- в отчётах по ключевым словам с поисковых систем сами ключевые слова выводятся в нечитаемой форме, например, %22%d0%9f%d0%b5%d1%81%d0%b5%d0%bd%d0%ba%d0%b0 вместо «Песенка». Для исправления ситуации можно установить Greasemonkey скрипт, исправляющий кодированные строчки.
Читать дальше →
Total votes 6: ↑5 and ↓1 +4
Comments 12

Django: Не изобретая велосипед

Reading time 2 min
Views 2.6K
Lumber room
Хотел поделиться списком django-проектов, которые могут быть очень полезны при старте любого нового проекта. Чтобы, как говориться, «не изобретать велосипед».

Читать дальше →
Total votes 18: ↑14 and ↓4 +10
Comments 3

Программируем для PSP: Часть I, настройка компилятора

Reading time 4 min
Views 5.5K
Programming *
Давайте условимся сразу: я следую паттерну «изучение обучением», т.е. учу, одновременно изучая, обгоняя читателей на 2-3 «шага» вперед. Однако это не значит, что я ничего не знаю и все, что говорю — обычные копипасты: я стараюсь разобраться в теме, прежде чем писать о ней. Поэтому смело задавайте вопросы, этим вы принесете пользу и себе, и мне: на вопросы, ответ на которые я не знаю, я буду его искать, осозновать и рассказывать вам.

Итак, в этом топике будет небольшой рассказ о том, как скомпилировать и запустить первую программу на своей приставке. Сразу предупреждение: статья мегатехнического плана, почти все содержание касается утомительной, но быстрой настройки компилятора, а в результате вы получите лишь банальный «Hello World». Однако без нее никак.
Читать дальше →
Total votes 2: ↑2 and ↓0 +2
Comments 1

Программируем для PSP: Часть I, настройка компилятора

Reading time 4 min
Views 11K
Programming *
Давайте условимся сразу: я следую паттерну «изучение обучением», т.е. учу, одновременно изучая, обгоняя читателей на 2-3 «шага» вперед. Однако это не значит, что я ничего не знаю и все, что говорю — обычные копипасты: я стараюсь разобраться в теме, прежде чем писать о ней. Поэтому смело задавайте вопросы, этим вы принесете пользу и себе, и мне: на вопросы, ответ на которые я не знаю, я буду его искать, осозновать и рассказывать вам.

Итак, в этом топике будет небольшой рассказ о том, как скомпилировать и запустить первую программу на своей приставке. Сразу предупреждение: статья мегатехнического плана, почти все содержание касается утомительной, но быстрой настройки компилятора, а в результате вы получите лишь банальный «Hello World». Однако без нее никак.
Читать дальше →
Total votes 32: ↑32 and ↓0 +32
Comments 45

Программируем для PSP: Часть II. Тотальный контроль

Reading time 3 min
Views 4.8K
Programming *
В прошлом туториале мы разобрались с «хелловорлдом», теперь пришло время к следующей, не менее важной вещи: вводе информации. Умея выводить что-то на экран и узнавать, что нажал пользователь, уже можно сделать полезную программу. Фактически, после этого урока уже можно будет начинать что-то свое, однако я бы посоветовал дождаться, хотя бы, спрайтов.

Ура! Подписывайтесь на мой PSP-программирования блог.

Ну и еще, это уже отдельным манифестом: если вы нашли в топике ошибку, можете покричать «ура» или гордиться этим. Лучшее, что вы можете сделать — написать мне об этом в личку (это можно легко сделать, нажав «добавить пользователя в друзья» и написав об ошибке в поле «представиться». если вам противно видеть меня в списке друзей, так и напишите, и я не буду жать на кнопку «разрешить добавить»). Самоутверждаться найденными ошибками в комментариях, пожалуйста, не надо, потому что пользы от этого абсолютно никакой, а прокручивать такие комментарии в поисках реально чего-то интересного — раздражает.
Читать дальше →
Total votes 26: ↑24 and ↓2 +22
Comments 25

Подсветка исходного кода

Reading time 2 min
Views 4.8K
.NET *
Переписал и изменил (специально для Хабры, а точнее для .NET блога) на досуге небольшой модуль, который подсвечивает исходный код C#, VB.NET, HTML/XML/ASPX, JavaScript и SQL.

Если Вы хотите вставить кусок исходного кода в новую запись или комментарий к записи, используйте Source Code Highlighter, который подсветит Ваш код.

Есть поддержка нумерации строк и вставки переноса строк, если вы отметили «Отключить автоформатирование» при написании поста.

Читать дальше →
Total votes 34: ↑30 and ↓4 +26
Comments 82

Правила хорошего тона #4 — Программирование с гостем

Reading time 1 min
Views 922
Lumber room
  • встречаем гостя с взлетающей ракетой
  • как и когда становятся программистами
  • дети учатся читать
  • комментирование и документирование
  • программы, ошибки и чужой код
  • коммерческое программирование и open source
  • обратная связь с пользователями
  • рекомендации и советы


P.S. В гостях PC по Skype.

Подписка на подкаст
Total votes 11: ↑7 and ↓4 +3
Comments 7

Больше чем просто бесплатно

Reading time 2 min
Views 562
Open source *
В любом разговоре о преимуществах OpenSource перед закрытыми разработками всегда встают 2 главных аргумента.
  • Бесплатность
  • Открытый код

Если с первым все сразу ясно, то второй пункт стоит выделить отдельно. Основной синоним открытого ПО — безопасность продукта т.к. код доступен нам и мы его можем просмотреть.
Читать дальше →
Total votes 46: ↑25 and ↓21 +4
Comments 21

UPD: Плагин Wi2Geo для популярных мессенджеров QIP, Miranda и Skype + исходники

Reading time 1 min
Views 1K
Software
Буквально вчера мы выпустили плагин для QIP'а. С помощью этого плагина вы можете автоматически определять свое местоположение, по желанию отображать местоположение в статусе или быстро отправлять свое местоположение собеседнику. А если вы зарегистрированы в сети Wi2Geo (http://wi2geo.ru/), то плагин будет автоматически обновлять ваше местоположение, для этого нужно просто зайти на страницу настроек модулей и настроить авторизацию. Кстати, там же можно управлять и отображением местоположения в статусе:

Wi2Geo QIP

Быстро послать координаты собеседнику можно простой кнопкой:

image

На самом деле, этот же плагин, и с тем же функционалом, работает для Miranda и Skype.
Сам плагин можно скачать отсюда: wi2geo.ru/updates/GeoQip/Wi2Geo.Installer.msi

Также, в процессе публикования плагина мы столкнулись с тем, что политика форума QIP'а предполагает, что нужно выкладывать
исходники, мы немного заморочились и таки выложили исходники к нашему плагину на гуглокоде: code.google.com/p/wi2geoplugin

Лицензия MIT (по-моему, самая либеральная лицензия), так что можете делать с ними вообще что хотите.
При небольшом изменении исходников, можно добавлять функционал WiFi-навигации практически в любое приложение, поддерживающее
плагины, ну, или в свое собственное.
Total votes 19: ↑10 and ↓9 +1
Comments 6

jQuery.live в деталях

Reading time 5 min
Views 33K
jQuery *
Ввиду недавнего обсуждения скорости работы jQuery.live и благоразумности писать свое собственное делегирование обработчиков событий, решил по полочкам разобрать работу jQuery.live. Т.е. целью данного топика поставлена задача выявления всех особенностей при использовании live-биндера и анализ кода. Без сравнительных характеристик, без приведения оптимальных методов делегирования.

Принцип работы live основан на делегировании обработчиков событий.

Делегирование — паттерн, в основе которого лежат 2 принципа javascript: всплытие событий (event bubbling stage) и возможность определения элемента, отследившего событие.

Тот факт, что делегирование отслеживает исключительно стадию всплытия события, объясняет невозможность обвешивания live-биндеров на события blur, focus, mouseenter, mouseleave, change и submit: все эти события не имеют стадий захвата и всплытия.

Дальше много букв и кода
Total votes 36: ↑33 and ↓3 +30
Comments 12

Хранение кода в бд или собираем код по кирпичикам

Reading time 7 min
Views 9.5K
Website development *
Данная статья написана Napolsky. По известным причина он не смог ее опубликовать. Если статья вам понравилась — поощрите автора известным способом.

В этом топике я расскажу об одном разрабатываемым мною подходе в веб программировании, сердцем которого является хранение кода в базе данных. Несколько замечаний по дальнейшему тексту:
  • Под словосочетанием «код страницы» имеется ввиду исполняемый (php) код
  • Во всех вопросах, касательно производительности, имеется ввиду чистое время генерации страницы, без использования акселлераторов, систем кеширования и т д

Как все начиналось


Для того чтобы понять, а «зачем оно собственно надо» быстренько пройдем тот путь, который и привел меня к хранению кода в бд. Так сложилось, что свой путь в веб программировании я начинал не с написания каких-либо скриптов или модулей для существующих систем, а сразу с написания собственного движка сайта с абсолютного нуля. К этому моменту я имел двухлетний опыт программирования на C++ и, конечно же, по накатанной пытался строить свой веб движок на ООП (правда в то время в PHP от ООП было одно название :) ). В пределах разумного, я очень люблю свои «велосипеды». Особенно большие. И прежде чем воспользоваться готовым решением, всегда задаюсь вопросом «а нельзя ли написать получше?».
Читать далее
Total votes 116: ↑67 and ↓49 +18
Comments 270

Поиск и навигация по коду в VS 2010

Reading time 4 min
Views 12K
Visual Studio *
Translation
image
Разработчики должны иметь возможность легко искать, ориентироваться и понимать код, в котором работают. Мы изучили юзабилити и пришли к выводу, что разработчик проводит много времени читая, пересматривая и исследуя существующий код, вместо написания нового кода.

Редактор VS 2010 добавляет новые возможности, который позволяют более продуктивно искать и ориентироваться в коде, а также проще понимать, как код используется в проекте.
Читать дальше →
Total votes 54: ↑37 and ↓17 +20
Comments 22

Веб-метрика от Google

Reading time 2 min
Views 4.8K
IT-companies
image
В рамках проекта «Давайте сделаем интернет быстрее», Google опубликовал некоторые статистические данные о размере, количестве ресурсов и других показателях страниц во Всемирной паутине. Статистика была собрана из выборки в несколько миллиардов веб-страниц в процессе анализа и индексирования «движком» поискового гиганта.
При обработке этих страниц алгоритмом принимались во внимание не только основные html¬-страницы сайтов, но и производились попытки обнаружить и обработать остальные ресурсы, размещаемые на сайтах: таблицы стилей, скрипты и изображения.
Читать дальше →
Total votes 46: ↑40 and ↓6 +34
Comments 20

Каждой визитке свой QR-код

Reading time 3 min
Views 4.9K
Self Promo

Вопрос передачи личной контактной информации был, есть и будет актуальным. Как происходит передача контактов в современном мире?
Самый распространенный способ – начитка циферок вашего номера собеседнику. Последний вносит информацию в бумажный архив или в телефон. В бумажках есть большой минус — слабая каталогитизация и неудобно реализованный поиск. С телефоном проще, но все-равно это время. Необходимо достать телефон из кармана, барсетки, рюкзака (или где еще носят мобильники?), разблокировать и только потом панично набирать циферки. А в спешке пальчики не слушаются и тыкают куда попало.
Читать дальше →
Total votes 63: ↑52 and ↓11 +41
Comments 91

Реализация Code Action с помощью Roslyn

Reading time 8 min
Views 2.5K
.NET *C# *
Tutorial
Translation
Roslyn Services API позволяют легко реализовывать расширения, которые находят и устраняют проблемы в коде прямо в Visual Studio. Roslyn Services API доступно как часть Roslyn CTP.

В этом посте мы реализуем расширение для Visual Studio, которое детектирует вызовы метода Count() у Enumerable, после чего результат проверяется на равенство больше нуля, например, someSequence.Count() > 0. Проблема, заключающаяся в коде, в том, что Count() должен пройтись по всей последовательности, прежде чем вернуть результат. Более правильным подходом в данном случае является вызов метода Enumerable.Any().

Чтобы исправить это, мы реализуем CodeIssueProvider, детектирующий проблему, и CodeAction, который заменяет условие на вызов Enumerable.Any(), как и требуется. Т.е. наш CodeAction изменит что-то типа someSequence.Count() > 0 на someSequence.Any().
Читать дальше →
Total votes 33: ↑31 and ↓2 +29
Comments 6

Source code как способ думать

Reading time 7 min
Views 15K
IT systems testing *Programming *Perfect code *
Recovery mode
Маленькое предварительное замечание: Подробное объяснение потребовало бы объёмов средней книжки. Тут всё дано схематично, кратко и без подробностей. Текст, конечно, хулиганский, но прежде чем наезжать на автора, стоит учесть, что за ним стоит двадцать лет опыта и много-много литературы как классической, так и специалистам ИТ не ведомой.

Есть слово, приносящее индустрии каждый год огромные убытки. И слово это — bug.

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

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

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

Почему так происходит? Потому что в индустрии совершенно превратно понимают, что такое исходный код и для чего он нужен.

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

Если сделать программиста не идеальным, получается одна интересная штука: код перестаёт быть готовым результатом. Он даже перестаёт быть результатом. И становится отражением текущего понимания программистом условий поставленной задачи и способов её решения.

Код именно отражает, а не описывает. Последнее возможно, но требует перестройки всего процесса, от форматов записи до мозгов.

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

Писать и говорить то, что думаешь, — это всегда отсутствие такта, презрение к окружающим и хамство. Если кто-то ставит в своём коде комментарий «Stupid idea. Does not work, if N < 0. Correct ASAP.», он рискует прослыть минимум странным. А вот если это попадёт в участок ответственности гениального программиста, тут уже мелкой истерикой не ограничится. Даже, если «stupid» будет подразумеваться только по контексту. Или напишите в комментарии что-нибудь типа «I do not know why this works, but otherwise the function generates an exception.» Потом покажите это начальнику и попросите повышения.

И, конечно, гораздо выгоднее говорить «Мы исправляем баги в коммуникационном модуле», а не «Читая документацию мы прошляпили несколько критических моментов и неделю будем всё с нуля переделывать.»

Ладно, оставим. Большинство такого не выдерживает. Страшно. И ронять чувство собственного достоинства тоже страшно. И лицо потерять… И начальство тоже… Короче, фиг с ним, перейдём к плюшкам.

Читать дальше →
Total votes 79: ↑39 and ↓40 -1
Comments 147

Сверхбыстрое копирование\вставка фрагментов кода

Reading time 6 min
Views 28K
Programming *C++ *Qt *
Постоянно программируя на C++/Qt, я заметил, что было бы удобнее хранить где-нибудь свои отрывки кода и иметь к ним быстрый доступ. Конечно же, я принялся искать и нашёл множество готовых программ-органайзеров и сайтов. Я перепробовал их, но меня всё это не устроило.

Хотелось именно быстрого доступа — а значит по глобальным хоткеям. Чтобы нажал — ввёл слова в поиск — получил код. Но такими функциями обладали всего две программы, а они были платными и не кроссплатформенными.

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

Читать дальше →
Total votes 53: ↑48 and ↓5 +43
Comments 48

The Good, the Bad and the Ugly code

Reading time 7 min
Views 30K
Website development *Programming *Perfect code *

Хороший код или плохой? Лично для меня хороший код обладает следующими качествами:
  • Код легко понятен разработчикам разной квалификации и хорошо структурирован
  • Код легко изменять и поддерживать
  • Приложение выполняет свои функции и обладает достаточной, для выполняемого круга задач, отказоустойчивостью

Несмотря на короткое описание, о том, как добиться выполнения трех этих условий, написано много толстых книг.

Почему именно эти критерии? Сразу оговорюсь, речь сейчас идет о разработке ПО для бизнеса (enterprise application). Критерии оценки кода для систем реального времени, самолетов, систем жизнеобеспечения и МКС отличаются.
Читать дальше →
Total votes 47: ↑40 and ↓7 +33
Comments 18