Pull to refresh
0
0
Артем Сененко @slima4

User

Send message

Читаем QR код

Reading time5 min
Views1.1M
Иногда возникают такие ситуации, когда нужно прочитать QR код, а смартфона под рукой нет. Что же делать? В голову приходит лишь попробовать прочитать вручную. Если кто-нибудь сталкивался с такими ситуациями или кому просто интересно как же читается QR код машинами, то данная статья поможет вам разобраться в этой проблеме.

В статье рассмотрены базовые особенности QR кодов и методика дешифрирования информации без использования вычислительных машин.

Иллюстраций: 14, символов: 8 510.
Читать дальше →
Total votes 623: ↑614 and ↓9+605
Comments109

Поиск проезда на общественном транспорте в мобильном 2ГИС

Reading time1 min
Views16K
На сегодняшний день мобильная версия 2ГИС — это справочник по более чем 1 000 000 организаций России и детальная 3D-карта с указанием этажности зданий, внутриквартальных проездов, киосков и заборов. А теперь к этому списку добавился поиск проезда на общественном транспорте.

imageimageimage

Подробности: как ищет, работает автономно и т.д.
Total votes 60: ↑52 and ↓8+44
Comments72

Обламываем UAC

Reading time6 min
Views103K
Уж не знаю, сколько раз поднималась пресловутая тема контроля за действиями пользователя (которая начиная с Windows Vista известна как UAC): нужна ли она, насколько эффективна… Но мы рассмотрим этот вопрос еще раз, теперь с чисто прикладной, хакерской точки зрения. Рассмотрим плюсы и минусы системы, а также самое главное — как ее можно (и можно ли вообще) обойти.


Читать дальше →
Total votes 112: ↑77 and ↓35+42
Comments47

Многопользовательский чат на BAT

Reading time3 min
Views22K
Был период, когда в универе задали сделать несколько чатов. В зависимости от вариантов, были заданы различные способы взаимодействия программ от сокетов до майлслотов (mailslot). Когда задания были прикончены, остались силы взяться за скрипты BAT. Вот что получилось…



Всё что нужно для запуска:
1. Взять код по ссылке в конце статьи
2. Сохранить код в файл *.bat
3. Положить файл в сетевую папку
4. Запустить файл с разных компов (можно и с одного)

В комментариях предложили использовать совместно с DropBox, но говорят — что работает весьма не быстро.
Читать дальше →
Total votes 247: ↑242 and ↓5+237
Comments72

Debugger Canvas – новый способ отладки кода в Visual Studio

Reading time2 min
Views3.6K
Debugger Canvas – это достаточно интересный способ отладки приложений (и не только). Этот плагин для Visual Studio Ultimate дает немного, пока для меня, необычный способ пошаговой отладки в Visual Studio. После установки этого расширения в Visual Studio ничего настраивать не нужно, а увидеть его работу можно сразу же после запуска приложения под отладчиком и установки точки останова. Debugger Canvas автоматически откроет в Visual Studio отдельный таб со своей функциональностью. Идея этого расширения в том, что оно открывает каждый отлаживаемый метод в отдельной области, позволяя на одном экране проследить цепочку вызовов методов (call stack) и более того иметь возможность просматривать значения локальных переменных в предыдущих методах по цепочке, если вы проходили их под отладчиком. Под катом более подробно о функциях и скриншоты.
Читать дальше →
Total votes 76: ↑68 and ↓8+60
Comments38

Tips and Tricks 1: отложенные вызовы функций (Functor Manager)

Reading time5 min
Views7.4K
При создании игр разработчики часто сталкиваются с такой задачей — какое событие должно быть выполнено, но не в данный момент, а спустя какое-то время. Решается эта задача по разному. Чаще всего у игровых объектов присутствует собственный внутренний таймер, и нужную задержку можно реализовать с его помощью (добавив лишний код объекту). Но иногда нужно сделать отложенный вызов метода у объекта, не имеющего собственного таймера, скажем скрыть окно, строку, показать иконку или эффектик спустя некоторое время, сделать что-то ещё, но не прямо сейчас, а с задержкой. Однократно или несколько раз.

Вот для таких и подобных целей моим коллегой была разработана универсальная система, которую он назвал Functor Manager (возможно для названия подобных систем есть устоявшийся другой термин, я не знаю, буду рад если подскажут).

Изначально код был написан на C++, и использовался в наших прошлых проектах, сейчас у нас проект на C#, поэтому реализацию приведу на C#. Краткая концепция и код реализации (C#) под катом.

Читать дальше →
Total votes 11: ↑8 and ↓3+5
Comments5

А еще в Visual Studio есть External Tools…

Reading time4 min
Views5.3K
Забавно, но я долгое время считал, что возможность запуска сторонних приложений из Visual Studio не заслуживает внимания. Серьезная интеграция требует разработки plugin, и точка!

Как оказалось, я был неправ. Есть множество сценариев, когда External Tools позволит быстро расширить возможности Visual Studio.

Как раз вчера мой хороший знакомый задал вопрос – как сделать аналог команды Open Containing Folder из пакета PowerCommands for Visual Studio 2010, но для вызова Far Manager, а не Windows Explorer? В оригинале эта команда доступна в контекстном меню Solution Explorer, она открывает Windows Explorer и устанавливает курсор на файл, для которого она была вызвана.

Моя первая идея (нет ничего проще – нужно скачать PowerCommands.vsix из Visual Studio Gallery, распаковать его, разобрать на части Reflector’ом, обложиться руководствами по расширению Visual Studio и быстро написать аналог) понимания не нашла – написание plugins для Visual Studio (если это не расширения редактора) по-прежнему остается весьма нетривиальной задачей, и если нет опыта, то даже при наличии примеров и пошаговых руководств ее решение займет не меньше, чем полдня – если не целый день!

Еще немного подумав, я решил, что для этих целей вполне подойдет механизм External Tools! И, действительно, создание «команды» Open Containing Folder in FAR заняло у меня не более получаса.

Давайте посмотрим, как это можно сделать.
Читать дальше →
Total votes 86: ↑72 and ↓14+58
Comments40

Что может Ctrl в Visual Studio

Reading time2 min
Views234K
Одна простая клавиша Ctrl может значительно упростить работу в Visual Studio. Помимо типичных комбинаций, которые нам очень хорошо знакомы, существует также и большое количество других, менее известных, но от этого и более ценных.

Далее список того, что можно делать с клавишей Ctrl.

Читать дальше →
Total votes 108: ↑84 and ↓24+60
Comments61

TOP30 отмазок веб-разработчика

Reading time2 min
Views47K
Не секрет, в работе веб-студий порой случаются ситуации, когда дедлайны горят или уже сгорели. И тогда нужно как-то донести эту не совсем приятную новость клиенту. Как перефразировал журнал Сноб известную поговорку, «У меня две новости — плохая и хорошая. Хорошая новость: плохая новость могла бы быть намного хуже...»

Мы вспомнили как минимум 30 отмазок разработчиков перед клиентами по поводу срыва сроков работ. Классика жанра типа «Переводил бабушек через дорогу» и «троллейбус упал дверцами вниз – никак не мог выйти» в нашем списке, по понятным причинам, не значатся.

Предлагайте свои варианты отмазок! Лучший вариант отмазки получит приз (под катом). Итак, поехали!
Читать дальше →
Total votes 89: ↑56 and ↓33+23
Comments286

Дружимся с AirPlaySDK

Reading time5 min
Views7.9K
Ни для кого не секрет что кодинг для мобильников — дело интересное, прибыльное и перспективное. Я всегда запускаю на КПК какую-нибудь игру когда спускаюсь в метро и вижу как то же самое делают и окружающие меня люди. Но к сожалению текущее разнообразие платформ зачастую заставляет нас ограничить круг поддерживаемых устройств.
Читать дальше →
Total votes 21: ↑19 and ↓2+17
Comments25

Jinni: поиск фильмов по настроению

Reading time2 min
Views3K
Киностартапом сейчас никого не удивишь.
Казалось бы, изобретено все: топы лучших фильмов, поиск фильмов по жанрам, стране и прочим параметрам, рекомендации пользователей.

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

Поиск по жанрам также не помогает: комедии бывают романтические, тупые, а бывают и грустные. А что может скрываться за жанром «драма» — перечислять устанешь.

Но вот ребятам из jinni удалось сделать кое-что новое в поиске фильмов.
Читать дальше →
Total votes 58: ↑51 and ↓7+44
Comments30

Оффлайновые карты всего мира

Reading time2 min
Views6.1K
MapsWithMe У меня давно была мечта написать карты. Удобные карты, которым не нужен доступ в Интернет, с актуальными данными, быстрые и работающие на любом устройстве. После работы инженером в Google Maps эта мечта только усилилась и в какой то момент переросла в конкретные действия.

Если это будет интересно, я как нибудь напишу, как я уходил из цюрихского Гугла, и при этом все вокруг делали квадратные глаза и как потом на чистом энтузиазме мы с друзьями почти год писали проект.
Читать дальше →
Total votes 234: ↑225 and ↓9+216
Comments208

TermKit: новая концепция консоли с графическим выводом

Reading time2 min
Views6.1K
Командная оболочка (консоль) — пожалуй, самый архаичный элемент Unix, который остаётся почти в неизменном виде уже тридцать лет. Мы любим его, но кому-то кажется странным сидеть у монитора с миллионами пикселей, ежедневно глядя в консольное окошко образца 70-х годов, когда вся информация на компьютерах была исключительно в текстовом виде.


А что если добавить прямо в консоль отображение графики, видео и других типов данных, а не только текста? Изменить концептуальные принципы работы командной оболочки — это сумасшедшая идея, но ведь никто не запрещает экспериментировать.
Читать дальше →
Total votes 189: ↑154 and ↓35+119
Comments296

Принцип подстановки Барбары Лисков

Reading time6 min
Views145K
Привет, хабрачеловеки!

Захотелось вот поделиться сокровенным знанием по этой теме. К тому же материалов по этому, достаточно важному принципу проектирования классов и их наследования, в Рунете как-то негусто. Имеются формулировки вида:

«Пусть q(x) является свойством верным относительно объектов x некоторого типа T. Тогда q(y) также должно быть верным для объектов y типа S, где S является подтипом типа T.» © Wikipedia

Но они выносят мой мозг меня совершенно не радуют.

Если хочется услышать объяснение этой хрени умной фразы — прошу под кат.
Читать дальше →
Total votes 85: ↑75 and ↓10+65
Comments55

Новый программерский жаргон

Reading time7 min
Views51K
Посетителям сайта stackoverflow.com был задан вопрос: «Какие программерские термины вы придумали, так чтобы они стали популярны в ваших кругах (то есть вы слышали, что кто-то их повторяет)?

Ниже — вольный перевод самых популярных ответов.

Читать дальше →
Total votes 411: ↑373 and ↓38+335
Comments193

Числовые подписи

Reading time3 min
Views2.2K
Меня всегда завораживала магия программирования — маленькие фокусы, в которых бессмысленный на первый взгляд код делает что-то интересное. Самые известные из них — «подписи», которые выводят на печать короткий текст (обычно имя автора). В прошлый раз я показала несколько таких фокусов, основанных на эзотерических языках программирования, и некоторым читателям они даже пригодились при подготовке новогоднего поздравления :-) Настоящая же магия — это создание таких вещиц на совершенно нормальном языке, который вы используете каждый день, например, на C++ или Java. В этой статье я покажу несколько способов вывести короткий текст с использованием в качестве исходных данных только числовых констант.

Disclaimer: большинство приведенных фокусов основаны на низкоуровневых действиях с памятью, поэтому результаты могут варьироваться в зависимости от архитектуры компьютера и используемого компилятора (я пользуюсь gcc).


C++ спокойно относится к маргинальным манипуляциям с памятью и указателями, поэтому обфускации типа задания строки числом — почти обычное дело :-) Самый простой пример:

Читать дальше →
Total votes 95: ↑85 and ↓10+75
Comments48

Использование boost::variant для описания состояний модели

Reading time3 min
Views10K
В моделях данных очень часто требуется хранить некоторые переключаемые состояния. Классический способ в С++ для этого — использование перечислимых типов enum.

Например, если у вас в программе пользователь может переключаться между двумя экранами, вы заводите enum screen { screen_one, screen_two }; и переменную screen cur_screen_. Отрисовщик должен получить у модели «текущий выбранный экран», и затем отрисовать его, запрашивая у модели дополнительные данные, относящиеся именно к этому экрану. Что-то вроде:

switch (model.cur_screen())
{
case screen_one:
  model.get_screen_one_elements();
  ...
case screen_two:
  model.get_screen_two_elements();
  ...
}


При использовании такой модели, программист может запрашивать данные, которые для текущего состояния совершенно не актуальны. Например, вызвать метод get_screen_two_elements() для получения списка элементов второго экрана, когда текущий экран — первый. Хорошей практикой является использование ассертов вида ASSERT(cur_screen_ == screen_one) в методах, зависимых от конкретного экрана. Это обеспечивает некоторый контроль времени выполнения.

Но есть способ обеспечить контроль времени компиляции и более явное разделение состояний с помощью boost::variant.

Читать дальше →
Total votes 24: ↑22 and ↓2+20
Comments17

STL Filter — скрипт для лаконичных ошибок STL

Reading time3 min
Views1.7K
STL славится своей способностью заполнять метры экранного пространства сообщениями об ошибках. Надоело смотреть на экран и видеть перлы вроде:

testmap.cpp:25: error: no matching function for call to ‘std::map<int, double, std::less, std::allocator<std::pair<const int, double> > >::map(int, int, int)’
/usr/include/c++/4.3/bits/stl_map.h:175: note: candidates are: std::map<_Key, _Tp, _Compare, _Alloc>::map(const std::map<_Key, _Tp, _Compare, _Alloc>&) [with _Key = int, _Tp = double, _Compare = std::less, _Alloc = std::allocator<std::pair<const int, double> >]
/usr/include/c++/4.3/bits/stl_map.h:165: note: std::map<_Key, _Tp, _Compare, _Alloc>::map(const _Compare&, const _Alloc&) [with _Key = int, _Tp = double, _Compare = std::less, _Alloc = std::allocator<std::pair<const int, double> >]


ну и еще пара десятков строк.

Читать дальше →
Total votes 40: ↑32 and ↓8+24
Comments35

Что скрывает class Empty {}

Reading time3 min
Views9K
Это заметка о методах, которые C++ создаёт автоматически, даже если вы их не создавали.

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

Читать дальше →
Total votes 65: ↑58 and ↓7+51
Comments65

Виртуальный конструктор

Reading time6 min
Views64K
Все мы знаем, что в C++ нет такого понятия как виртуальный конструктор, который бы собирал нужный нам объект в зависимости от каких-либо входных параметров на этапе выполнения. Обычно для этих целей используется параметризованный фабричный метод (Factory Method). Однако мы можем сделать «ход конем» и сымитировать поведение виртуального конструктора с помощью методики, называемой «конверт и письмо» («Letter/Envelope»).

Читать дальше
Total votes 44: ↑34 and ↓10+24
Comments48

Information

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