Обновить

Полезное баловство, используем консоль браузера

Иногда знание JavaScript помогает не только заработать денег, а и упростить себе жизнь.

Некоторые задачи решаются через консоль браузера (F12), и имеют высокий КПД.
Правда, когда я это происходит, то меня не покидает ощущение того, что я занимаюсь каким-то баловством.
Читать дальше →

Сравнение библиотек уведомлений для JavaScript

Уведомление — это интерактивное сообщение, призванное донести информацию до пользователя.

Чем уведомления отличаются от диалогов?
  • Диалоги чаще всего предполагают некоторый ввод от пользователя (например, выбор варианта); уведомления обычно носят чисто-информативный характер
  • Диалоги чаще всего модальны (блокируют весь остальной ui, пока их не закроешь); уведомления обычно немодальны (хотя бывают очень даже оправданные исключения)
  • Диалоги чаще всего отображаются по одной штуке за раз, по центру экрана; уведомлений обычно может быть много, и отображают их где-угодно (например, в правом нижнем углу)

В случае с JavaScript, имеет смысл различать два семейства средств для работы с уведомлениями:
  • в контексте страницы — отрисовываются на странице стандартными средствами HTML/CSS
  • в глобальном контексте — отображаются в системном трее и т.д. специальными средствами

Последние — это всё что связано с W3C Web Notifications, данная статья не о них. Что касается страничных уведомлений, для них на JavaScript написан целый зоопарк библиотек — одна другой лучше, и если читателю хочется подобрать что-то подходящее для его задачи, эта статья, а особенно дальнейшая её часть, может оказаться полезной.
Читать дальше →

Отладка C++ программ в ОС GNU/Linux

Так уж случилось, что по долгу работы очень много времени провожу с операционными системами семейства GNU/Linux. И основным видом моей деятельности является разработка программного обеспечения на С++.

Так вот основной проблемой при использовании отладчика – это отображение сложных контейнеров, например, stl-контейнеров.

Решение, которое я предлагаю, актуально для gdb. Этот отладчик поддерживает скрипты, написанные на языке python, а механизмы отображения сложных объектов, называются pretty printers. Т.е. чтобы отладчик отображал нам все правильно, необходимо указать ему где находятся скрипты с этими самыми pretty printers. Для указания отладчику дополнительных команд необходим файл .gdbinit.

Итак, попробую оформить все, как инструкцию, так и читать удобней, и сам не забуду.
Читать дальше →

AiryVK-API — новая библеотека для взаимодействия с API ВКонтакте

Гуляя по просторам интернета, наткнулся на библиотеку AiryVK-API. Как раз в этот момент писал приложение под ВКонтакте. Документация по библиотеке крайне скудная, поэтому некоторые разъяснения удалось получить у автора. Как оказалось, библиотека в основном используется только в их внутренних проектах.
Читать дальше →

Python/JS-фреймворк для миграции с Lotus Notes

Краткая история появления нового фреймворка


С 1998 года мы разрабатывали СЭД на Lotus Notes для крупных и мелких гос. структур.
В 2012 решили делать коробочную версию системы на базе Open Source и выводить ее на рынок СЭД.
За два года мы переписали нашу систему в виде сервера на Python и клиента на HTML/CSS/JavaScript. В процессе этой работы появился дополнительный интересный продукт — фреймворк, годный для миграции систем с LN.

image


Мы планируем доработать его и выложить в Open Source.

Нужен ли такой продукт ИТ-сообществу?


Предлагаем обсудить этот вопрос. Подробности относительно СЭД и фреймворка мы решили оформить в виде вопросов, которые коллеги задавали нам по поводу нашей работы, и ответов на них.
Читать дальше →

Визуальные новеллы: рандомайзер для боёв

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

Итак, дневник разработки, запись первая. Рандомайзер для боёв.
Читать дальше →

К вопросу об «умной поливалке» на микроконтроллере

Ознакомившись с постом «Умная поливалка цветка на микроконтроллере Attiny13A», хотел бы сообщить о некоторых граблях, с которыми пришлось столкнуться занимаясь той же тематикой.

Первые и самые главные грабли — это качество датчика. Приобретенные мною китайские датчики окислились буквально за пять дней:
Читать дальше →

Mysql: полезный трюк с count() и count(distinct)

Хочу поделиться одним интересным решением, к которому мне удалось прийти сегодня во время оптимизации запроса поиска пользователей. В выборке необходимо было возвращать количество общих групп текущего пользователя и меня — того, кто производит поиск. Что называется total shared groups. В итоге всё поместилось в один компактный запрос без подзапросов (что очень критично, позже объясню почему) с использованием одной таблицы в FROM, без GROUP BY и HAVING.
Читать дальше →

Сохранение в файл в Unity3D

Начну с того, что в Unity есть своя система сохранений PlayerPrefs, но она имеет ряд минусов:

1) Не всем хочется засорять реестр.
2) Нет возможности сделать несколько слотов сохранения (костыли с припиской не считаются).
3) Нет возможности передать сохранение или перенести на другое устройство.

Поэтому я решил сделать свою систему сохранений.

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

Blind Call Center

В одной конторе, являющейся страховым брокером, где я имею честь быть заходящим админом, меня попросили сделать им такую систему, что бы сотрудники могли дозваниваться до клиентов, но в тоже время не знали бы их телефонные номера. Также при входящем звонке нужно было соединять клиента с оператором с которым он уже разговаривал ранее если таковой прецедент имел место быть.
Я решил сделать небольшое приложение на PHP с использованием AMI (Asterisk Management Interface), которое могло бы по имени клиента находить его телефонный номер в базе MySQL и передавать его в Asterisk для звонка.
Читать дальше →

Аудиосистема на CubieBoard a10, или пытаемся подружить кубик и пульт

Всем привет! В данном проекте я расскажу, как на кубиборде управлять медиаплеером MOCP (консольным) с помощью пульта ДУ.

Подготовка

Итак, варите кофе, поехали.

У нас имеется:
1 cubieboard a10 (далее кубик);
2 Пульт от ТВ;
3 Крепкий кофе.

Кубик заранее прошит Cubian БЕЗ графического интерфейса. Изначально на кубике не запущен модуль, отвечающий за IR. Для инициализации при загрузке дописываем в файл /etc/modules строчку sunxi_ir.

Перезагружаемся.

Чтобы проверить работоспособность, набираем:
Читать дальше →

iOS и SelectBoxView

Привет!

Хабр читаю давно, но вот никак руки не доходили написать здесь что-то свое. И вот я решился и подобрал, на мой взгляд, подходящий материал.
Моя основная работа связанна с разработкой на PHP. Недавно я решил изучить Objective C. Начал делать простые проекты. И вот вдруг мне понадобился обычный select, который так легко получить в веб-разработке. Тут же задача оказалась чуть сложнее. Думаю, существует много готовых решений, но все мы любим свои велосипеды (там, где это уместно) и основная задача тут — обучение и получение опыта.

В основе лежит UITableView. В качестве источника данных используется массив.
Читать дальше →

Perfetto — еще один Pixel Perfect

Привет Хабр!

Долгое время трудясь front-end разработчиком, стремился верстать точно пиксель в пиксель. Сегодня моя мечта осуществилась, теперь я могу делать это без проблем.

Хочу рассказать вам о своем небольшом плагине под названием «Perfetto — Pixel Perfect». Поехали!
Читать дальше →

Делить на ноль это просто


После постов «Почему нельзя делить на ноль, даже если очень хочется?» и «Папа, а почему на ноль делить нельзя?», я очень заинтересовался этой темой. Вот куда меня все это привело.

Если рассматривать деление как последовательность вычитаний делителя из делимого
7/3=2 и остаток 1
10/2=5 и остаток 0
и теперь также с нулем: 10/0=???
Сколько раз вычесть 0 из 10, чтобы узнать, сколько нулей в себе содержит 10? Сколько угодно. И после каждого вычитания будет оставаться остаток — 10.

10/0=(некое целое число которое, может быть любым, назовем его @) и остаток 10.
Чему равна @? Да чему угодно: вы произвели столько операций, сколько захотели 3 или 100500 или 0.

Теперь проверим, не противоречит ли это постулатам математики: @*0+10(остаток)=10.
Вот мы и узнали делимое. При таком подходе все правила математики работают — делаю вывод, что решение правильное.

На этом, собственно, все. Лично меня такой ответ полностью устраивает, но если все так просто — то почему до сих пор деление на ноль невозможно?

Пожалуйста, объясните в чем я не прав?

Пример оптимизации ajax отправки формы

image

Привет хабр!

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

Информационное меню для повышения конверсии (уровень идеи)

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

Так вот, чаще всего обновление собственного сайта это отличный повод попробовать что-то новое. Разрабатывая новую версию нашего сайта, мы прекрасно понимали, что самым слабым местом является основное меню – неудобное, неинформативное и, если уж быть совсем честным, отстойное. Остальное все под катом.
Читать дальше →

Переименовываем проект в Gerrit

Многие пользуются Gerrit . Это система code review, несколько громоздкая, но вполне удобная.

К сожалению, исторически сложилось, что такие банальные вещи, как удаление или переименование уже созданного проекта в штатном арсенале отсутствуют. Раньше это было связано с тем, что названия проекта хранились в primary key в sql таблицах, для которых update делать было нельзя, и приходилось сперва delete а затем insert, для чего уже нужно создавать промежуточный sql запрос.

В последних версиях удаление проекта появилось в виде плагина, но возможности переименовать все еще нет.

Как обычно выходят из ситуации?
Читать дальше →

TextMate 2 для Drupal разработчика

В этой статье я расскажу об установке и настройке редактора TextMate для Drupal разработчика. TextMate — это, наверное, один из самых известных редакторов кода для Mac OS. Можно сказать, что он стал классикой. Итак, приступим.
Читать дальше →