Search
Write a publication
Pull to refresh
0
@GenGoread⁠-⁠only

User

Send message

Получение списка контактов с gmail.com без использования Google API

Reading time8 min
Views4.1K
Однажды мне дали задание получить список контактов пользователя для некоторых почтовых сервисов (среди которых gmail.com, yahoo.com, aos.com). Сначала я занялся изучением почтовых протоколов IMAP и POP3, но к сожалению эти протоколы не предусматривают возможности получения списка контактов. От использования API которые предоставляют некоторые из этих почтовых сервисов я отказался, так-как эти API не для всех языков предоставляются, а так-же пришлось бы тратить время на изучение каждого из них.

Решил я что использование сокетов — это единственный вариант, который позволит быстро получить список контактов и делать это примерно одинаково для большинства почтовых сервисов. Суть в том, чтобы эмулировать работу браузера. Я рассмотрю алгоритм получения списка контактов с gmail.com, но подобным образом это делается и в других почтовых сервисах.
Читать дальше →

Беспроводные коммуникации «умного дома». Часть вторая, практическая

Reading time13 min
Views138K
После написания пары больших постов про «радиофицированный» умный дом, было достаточно много желающих получить код, который помог бы разобраться с этой темой более детально.
Свой исходный вариант кода по некоторым причинам выкладывать не хотелось — подготовил «облегченный» вариант, который позволит объяснить мои основные задумки.

Для того, чтобы пост получился наиболее зрелищным и полезным, сегодня реализуем домашнюю мини-систему (часы, календарь, погода, контроль уровня заряда батареек в датчиках и т.п.), состоящую из одного «главного» модуля (с большой светодиодной матрицей в качестве индикатора), двух автономных датчиков (будут измерять температуру) и модуля синхронизации времени через NTP.
Хватит слов, поехали!

Мой опыт настройки Apache x64 под Windows 8.1 x64

Reading time8 min
Views277K
image

Доброго времени суток, уважаемые читатели. В этой статье я хочу поделиться с вами личным опытом настройки Apache под Windows 8.1 x64.
Было время – установил я себе Windows 8.1 и думаю, раз уж пошло на то, «дай ка» Я и Apache подниму! И как обычно меня он очень порадовал (табличка: «Сарказм»). Пришлось повозиться почти целую ночь, чтобы поднять сервер. И мне это удалось! После этого я решил тем самым написать небольшую статью по настройке Apache, чтобы другой человек не тратил на это столько же времени, сколько Я.
После нескольких минут раздумий, решил написать пошаговую инструкцию, которая будет состоять из нескольких разделов:
  1. Подготовка папок
  2. Настройка Apache
  3. Настройка PHP
  4. Настройка MySQL
  5. Устанавливаем phpMyAdmin

Ну что ж, приступим.
Читать дальше →

Google выпустил предварительную версию Glass Development Kit

Reading time2 min
Views7.4K
Вчера Google наконец-то опубликовал предварительный обзор Glass Development Kit (GDK). Использовать его может каждый, однако в нем нет эмулятора очков, так что тестировать приложения, не имея собственного устройства, будет невозможно.

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

Подход Google к разработчикам по-прежнему довольно прост: возьми свои приложения для Android, повторно используй большую часть кода, перенеси его на Glass и оптимизируй их интерфейс. Таким образом, привязывая Glass к Android, компания гарантирует, что устройство не будет испытывать недостатка в приложениях, когда до него доберутся обычные пользователи.



Так же вчера вышло несколько приложений для Glass, использующих этот GDK. Google продемонстрировал их для прессы, разработчиков и исследователей возможностей Glass.
Читать дальше →

Уменьшение размерности в задаче линейной бинарной классификации(e.g. SVM)

Reading time4 min
Views11K
Требуемые знания: знакомство с методами линейной бинарной классификации (e.g. SVM (см. SVM Tutorial)), линейная алгебра, линейное программирование

Рассмотрим линейную задачу бинарной классификации (если задача линейно неразделима, её можно свести к таковой с помощью симметричного интегрального L-2 ядра(см. SVM)). imageПри решении такой задачи классифицируемые элементы (далее образцы) представляются в виде элементов векторного пространства размерности n. На практике в таких задачах n может быть чрезвычайно большим, например для задачи классификации генов оно может исчисляться десятками тысяч. Большая размерность влечёт, по-мимо высокого времени вычисления, потенциально высокую погрешность численных рассчётов. Кроме того использование большой размерности может требовать больших финансовых затрат (на проведение опытов). Постановка вопроса такова: можно ли и как уменьшить n отбрасыванием незначимых компонент образцов так, чтобы образцы разделялись «не хуже» в новом пространстве (оставались линейно разделимы) или «не сильно хуже».

В своей статье я хочу для начала провести краткий обзор метода из этой статьи Gene_Selection_for_Cancer_Classification_using, после чего предложить свой метод.
Читать дальше →

Встречаем дебетовую карту Google wallet

Reading time1 min
Views49K
Google просит сообщить, что он теперь не только строчка поиска — но и ваша реальная дебетовая карта. Средства из Google wallet теперь можно тратить используя физическую карту (работает как MasterCard). Дневной лимит покупок — 5000$. Обещают отсутствие месячных или годовых комиссий, выпуск карты также бесплатен.

Однако бесплатно не все: комиссия за пополнение баланса (с карт или банковского счета) и отправку денег на карту/банковский счет составляет 2.9% (минимум 0.3$ за операцию).

Пока это доступно только на территории США.
Читать дальше →

Цветовая пипетка на JS, 399 символов (не строк)

Reading time2 min
Views6.9K
(Если уж делать в 5 строк JS+HTML+CSS, то что-то полезное.)

Так называемый Color Picker предназначен для копирования в буфер обмена HEX-кода одного из 216 цветов «безопасной» веб-палитры одним кликом и Ctrl-C.

Пикер умеет много гитик:
1) показывает код цвета по наведению мыши;
2) предоставляет код для копирования по клику;
3) переформатируется в другое количество цветов и ячеек без изменения объёма кода.

<body onload="var H=512,D=51,s='',h=function(a){return a.toString(16).substr(1)},r=256,g,b,v;for(;r<H;r+=D){for(g=256;g<H;g+=D)for(b=256;b<H;b+=D)s+='&lt;b style=&quot;background-color:'+(v=h(r)+h(g)+h(b))+';display:inline-block;width:8px;height:8px;border:1px solid;margin:-1px&quot;onmouseover=this.title=\''+v+'\' onclick=prompt(\'\',\''+v+'\') >&lt;/b>';s+='&lt;br>'}document.body.innerHTML+=s">

Гитхаб-демо (фиддл поддерживать это не умеет)
подробнее

Тестирование: явный выбор карьеры

Reading time6 min
Views45K
Это перевод статьи.

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

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

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

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

Джон Стивенсон в своей статье пишет: «Да, ХХХ, был таким отличным тестером, но он был вынужден перейти в разработчики, чтобы иметь возможность развиваться в компании» и именно эту фразу я слышал в той или иной форме несколько раз. В нашем случае это был переход либо в разработчики, либо в управляющих проектом. Оба варианта рассматривались в качестве единственного реального прогресса для тестировщика. //Примечание переводчика: не совсем ясно, почему игнорируется путь QA Engineer -> Senior QA Engineer -> Lead QA Engineer. Но оставляю это на совести автора.

Это сделало меня грустным.
Читать дальше →

Извлекаем золото из старой электроники

Reading time2 min
Views783K


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

Инженер и химик Джозеф Мурчинсон (Josehf Murchison) опубликовал на сайте Instructables пошаговую инструкцию, как выплавлять золото из старых электронных приборов, которые вы собирались выбросить на свалку: старые ноутбуки, телефоны, камеры, принтеры, сканеры и прочее ненужное барахло.
Читать дальше →

Процессинг текстовых объектов в ERP-системах

Reading time12 min
Views6.7K
Необходимость сложной обработки текстовых данных, хранящихся в ERP-системах (и не только) возникает достаточно часто. В качестве вводных примеров можно привести следующие:
  • Унификация наименований товарной номенклатуры
  • Автоматическая расстановка формализованных атрибутов товаров на основании их наименований или описаний
  • Преобразование почтовых адресов как с целью унификации так и для формального структурирования
  • Определение пола человека по его имени
  • Извлечение информации из примечаний к документам (например, для автоматического связывания записи из выписки с отгрузочными документами)
  • и т.д. (фантазировать можно еще долго)

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

DES на J в сотню строк

Reading time7 min
Views11K
Неделю тридцатистрочников на JS стоит разбавить чем-нибудь действительно ненормальным.

image

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

Если есть вопросы, предложения или исправления к коду — добро пожаловать в комментарии.
Читать дальше →

Дизайн сайта в Sketch.app (Mac OS). Часть 1: плагины и прототип

Reading time4 min
Views55K
Радует, что все больше дизайнеров посматривают в сторону от Адоби в поисках инструментов поудобнее, полегче, попроще и подешевле. И выбирать есть что. Сегодня я расскажу про свой процесс создания дизайна сайта в Sketch.app. Надеюсь, какие-то мысли вы позаимствуете у меня, что-то никогда не станете делать так же, а до чего-то придете своим путем. Оставайтесь с нами.
Читать дальше →

Есть вероятность глюков в Chrome/Chromium 31, Opera 18: селекторы вроде nth-last-child могут отрабатывать некорректно

Reading time2 min
Views8.7K

В issues хрома за последние несколько дней появилось несколько issue, в которых описывается примерно следующий сценарий: используется тяжелый css3 селектор, в результате чего идет некорректное обращение. В том числе может некорректно работать селектор к нескольким объектам через запятую (#a, #b, #c etc.), однозначно некорректно работает nth-last-child. Гарантированно выявлен баг с ним.
Проблема, судя по всему, находится в механизме css-запросов, так как document.querySelector также некорректно адресуется. Что самое неприятное — jQuery так же опирается на нативные функции (если они существуют). Таким образом, сложные jQuery-запросы также перестали отрабатывать корректно.
Если в ваших проектах используется nth-last-child, подробности бага под катом
Читать дальше →

Программирование в уравнениях

Reading time3 min
Views17K
В обычном, как императивном, так и функциональном программировании вся программа по большому счету сводится к огромному числу равенств x = ..., где слева стоит переменная, а справа — выражение, зависящее от переменных. А языки программирования предоставляют синтаксический сахар, что бы записать это множество как можно более компактно. Это уже почти уравнения, только тривиальные.

Некоторые сложности обнаруживаются в ленивых языках:

fib = 1:1:(zipWith (+) fib (tail fib))


Здесь fib присутствует и в левой и в правой части, то есть мы получаем полноценное уравнение, решением которого будет бесконечная последовательность чисел Фибоначчи. Так как на бесконечных последовательностях естественным образом определяется топология, Haskell может решить это уравнение методом проcтых итераций (через оператор неподвижной точки).

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

Но есть язык, в котором уравнения являются важнейшей частью — это Modelica.

model Point
 Real x,y;
equation
end Point;

model Line
 parameter Real len;
 Point p1,p2;
equation
 len = (p1.x-p2.x)^2 + (p1.y-p2.y)^2;
end Line;


Здесь отрезок определяется как координаты концов и длинна, при этом длина и координаты связаны очевидным уравнением.

(К сожалению, source такого языка не знает, а вставить раскрашенный pygment-ом html не получается.)
Читать дальше →

PickMeUp — хороший jQuery datepicker plugin

Reading time13 min
Views101K

Проблема


Начиная работу над очередным сайтом понадобился datepicker. Самый известный такой datepicker — в jQuery UI, но так как jQuery UI в проекте не использовался — тянуть даже его часть не хотелось, принялся за поиски достойной альтернативы.

Требования следующие:
  • Выбор даты, нескольких дат, интервала
  • Простота настройки внешнего вида
  • Желательно без каких-либо зависимостей кроме jQuery

Требования вполне логичные, ничего сверх естественного.
Каково было мое удивление, когда просмотрев десятка два плагинов я не нашел подходящего.

Для любопытных — сразу демо того, что получилось в результате.
Читать дальше →

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

Reading time4 min
Views45K
Одно из самых частых требований заказчика — wysiwyg редактор в админке. Wysiwyg редактор имеет (как правило) интуитивно понятный интерфейс и позволяет пользователям, не знающим html, подготовить текст для размещения на сайте. Редакторы позволяют: форматировать текст, вставлять изображения и таблицы, создавать списки и много другое. Но имеют и свои минусы, самый главный из них, пожалуй, большое количество лишнего html кода.
На сегодняшний день существует большое количество различных wysiwyg редакторов и приложений для интеграции этих редакторов с django. Сегодня я расскажу про самые популярные.
Помимо собственно разметки текста, на практике важными характеристиками wysiwyg редактора для клиента являются — удобная вставка изображений и перенос отформатированного текста из сторонних источников (Word, веб-ресурсы). Важно чтобы при переносе отформатированного текста редактор удалял стили, которые могут конфликтовать со стилями сайта, например, шрифт текста. Во время обзора приложений особое внимание будет уделено этим двум характеристикам.
Читать дальше →

Программа конференции FOSS Sea

Reading time4 min
Views3.1K

30 ноября в Одессе состоится VI специализированная техническая конференция FOSS Sea: back-end на базе свободных и открытых технологий. Она будет проходить в два параллельных потока:
  • «Облака» – на этом потоке участники обсудят технические вопросы настройки, администрирования и поддержки облачных инфраструктур;
  • «JavaScript на бекенде» — здесь речь пойдет об использовании различных решений, таких как: node.js, express.js, jscala и других.

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

С докладами на конференции выступят сотрудники таких компаний как: Mirantis, DataArt, Infobox Cloud, ЛанТек, Lohika, GradSoft, RootUA Media, Европейское Агентство Высоких Технологий, GlobalLogic и других.
Читать дальше →

Делаем приставку — счётчик Гейгера к iPhone за 2 часа

Reading time3 min
Views203K
image

UPD: Кто уже читал пост — пожалуйста зайдите и поучаствуйте в опросе. Спасибо большое!

Примерно полтора года назад на нескольких сетевых ресурсах, в том числе и на хабре, начали пиарить проект «До-ра» — приставку к iPhone, позволяющую измерять радиационный фон и делать много всего вкусного на основании получаемой со счётчика Гейгера информации. Статьи в новостях проекта упоминают несколько многомиллионных грантов, выделенных на разработку приборчика фондом «Сколково». Шли месяцы, «До-ра» всё никак не получалась, покупатели ждали, конкуренты не дремали. Так ли сложна «До-ра» как её малюют и как собрать за пару часов из подручных деталей в десять раз более чувствительный аналог я расскажу тем кто нажмёт на
кнопку

Релиз openSUSE 13.1

Reading time2 min
Views43K


Сегодня вышел новый релиз популярного дистрибутива openSUSE 13.1.

Интересные нововведения:
  • Linux 3.11
  • GCC 4.8
  • обновлен systemd
  • X Server 1.14.0
  • GStreamer 1.0
  • KDE 4.11
  • GNOME 3.10

Более подробно о новшествах релиза под катом.

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

Программирование, как новый вид человеческой деятельности

Reading time6 min
Views43K
«Программист должен обладать способностью первоклассного математика к абстракции и логическому мышлению в сочетании с эдисоновским талантом сооружать все, что угодно, из нуля и единиц. Он должен сочетать аккуратность бухгалтера с проницательностью разведчика, фантазию автора детективных романов с трезвой практичностью экономиста» Академик А.П. Ершов




Предисловие

Есть распространенное мнение: «если бы строители строили дома так же, как программисты пишут программу — первый залетевший дятел разрушил бы цивилизацию». С подачи индийского гуру-программиста Мурали Кришна Чимутури (Murali Krishna Chemuturi), Интернет настойчиво приписывает авторство этой цитаты Джеральду Вайнбергу (Gerald Weinberg), хотя на личном сайте Джеральда она не ищется. Скорее всего, человек, который первый заговорил о психологии в программировании, к этому высказыванию не имеет никакого отношения. И вот, почему.

Это изречение – пример демагогического приемчика. Здесь пропущена главная посылка: разработка ПО это то же самое, что и строительство домов. Эта посылка, по умолчанию, подразумевается как достоверный факт, который не требует доказательства. Применение этого приемчика заставляет неискушенного читателя делать ложный вывод о том, что у программистов, в отличие от строителей, руки растут не из нужного места.

Материальное производство (обработка объектов физического мира) насчитывает десятки тысяч лет истории. На этом пути был накоплен колоссальный объем знаний естественных наук: математики, физики, химии, географии, геологии, биологии и проч.

Позволю крамольную мысль. Разработка ПО – новый вид человеческой деятельности, история которой насчитывает чуть больше полувека. В посте я хочу представить свое видение принципиальных особенностей разработки ПО, которые отличают ее от материального производства и следствий, которые из них вытекают.
Особенности и их следствия

Information

Rating
Does not participate
Registered
Activity