Посмотрев конференцию GoingNative 2012 решил попытаться описать «best practice» для написания программ в стиле C++11. Планируется цикл статей, кому интересно,
max7 @max7read-only
User
СЭДы на базе Free and Open Source Software
8 min
109KВ связи с активным развитием программных решений многих насущих проблем в области ИТ-технологий, которые на данный момент широко применяются в различных сферах деятельности, в первую очередь, в таких немаловажных, как производство, малый бизнес, образование и многие другие. Везде из перечисленного используются различные нормативные акты, заявления, договора и прочие бумажные документы.
Сейчас, становится очень модной тенденцией переводить предприятие (учреждение) на Систему Электронного Документооборота. Это не только модно, но, и, практично и удобно.
В связи с этим, появляются компании, которые предоставляют свои программные продукты – СЭДы, которые, порой шокируют своими ценами. Однако, не всё так плохо, т.к. благодаря инициативным и некорыстным людям, на свет появляются бесплатные и открытые продукты. Примерами тому, могут является две отличных, на мой взгляд, СЭД: NauDoc и Alfresco.
Сейчас, становится очень модной тенденцией переводить предприятие (учреждение) на Систему Электронного Документооборота. Это не только модно, но, и, практично и удобно.
В связи с этим, появляются компании, которые предоставляют свои программные продукты – СЭДы, которые, порой шокируют своими ценами. Однако, не всё так плохо, т.к. благодаря инициативным и некорыстным людям, на свет появляются бесплатные и открытые продукты. Примерами тому, могут является две отличных, на мой взгляд, СЭД: NauDoc и Alfresco.
+22
Wi-Fi быстрее в 20 раз
1 min
5.6K
Беспроводной модуль (на картинке) достаточно мал, что позволит использовать его в портативных устройствах. В планах у учёных — увеличить скорость до 100 Гбит/с.
Японцы начали изыскания в T-диапазоне радиоволн (между 300 ГГц и 3 ТГц). В настоящее время эта часть электромагнитного спектра мало используется, а значит, является подходящей для создания Wi-Fi сетей следующих поколений.
В качестве генератора несущей частоты исследователи использовали резонансный туннельный диод размером в 1 миллиметр. Ученые заставили полупроводниковое устройство резонировать на высокой частоте, используя его уникальные электрические характеристики и специальные управляющие сигналы.
[ источник ]
+22
Копирайт на команду /bin/true
3 min
20KTranslation
Среди всей этой шумихи по поводу авторских прав есть один забавный пример — это крайний случай использования копирайта, который породила AT&T где-то в 1980-х. Речь идёт о программе /bin/true. Это пустая программа, которую обычно используют только для того, чтобы писать бесконечные циклы (while true do ...) в шелл-скриптах. Программа «true» не делает ничего, а только завершается с нулевым кодом. Такого поведения легко добиться — достаточно просто создать пустой файл и сделать его исполняемым, что и делали создатели первых Unix-систем. Пустой файл интерпретируется как шелл-скрипт, который не делает ровным счётом ничего. А, поскольку у него это вполне успешно получается, шелл возвращает нулевой код завершения. Но юристы AT&T решили, что это не помешает защитить копирайтом.
+212
Вычисление CRC32 строк в compile-time
5 min
19K
Локализация здесь осуществляется довольно нехитро. Все строки, требующие перевода, оборачиваются в макрос
_TR()
:wprintf(L"%s\n", _TR("Some translating string"));
Макрос возвращает нужную версию текста в зависимости от текущего используемого языка. Определён он следующим образом:
#define _TR(x) g_Translator.Translate(x)
Здесь происходит обращение к глобальному объекту
g_Translator
, который в функции Translate()
считает в рантайме crc32 от указанной строки, ищет в своей xml-базе перевод с совпадающей контрольной суммой и возвращает его.Не буду судить насколько такое решение оправдано, но оно проверено временем и показало себя достаточно надёжным. И всё бы ничего, но такое решение не лишено недостатков: по сути, функция делает лишнюю работу — контрольные суммы можно было бы подсчитать один раз на этапе компиляции, и использовать в дальнейшем уже готовые числовые значения. Это также избавило бы от необходимости хранить в исполняемом образе дублирующиеся строки, ведь они уже есть во внешнем xml-файле с переводами.
Немного погуглив по запросу «compile-time crc32» я быстро понял, что задача это не самая тривиальная, а готовых решений мне найти так и не удалось.
+46
Извините, магазин на переучете
3 min
16KПри продаже материальных товаров необходимость делать инвентаризацию, пожалуй, самая неприятная часть работы. Все уже привыкли иметь дело с виртуальными материями.

А зачем вообще что-то городить с учетом товаров в ИМ? Почему не ограничиться фразами: «много, мало, уточните перед заказом?». Потому, что когда мы сами покупаем в ИМ – нам не нравиться звонить и спрашивать реальное количество доступное для покупки. Раз уж на сайте есть механизм онлайн заказа, хочется иметь возможность им полноценно пользоваться. Итак, если вам приходиться делать инвентаризацию вам придется разобраться в штрих-кодах (ШК) и сканерах.

А зачем вообще что-то городить с учетом товаров в ИМ? Почему не ограничиться фразами: «много, мало, уточните перед заказом?». Потому, что когда мы сами покупаем в ИМ – нам не нравиться звонить и спрашивать реальное количество доступное для покупки. Раз уж на сайте есть механизм онлайн заказа, хочется иметь возможность им полноценно пользоваться. Итак, если вам приходиться делать инвентаризацию вам придется разобраться в штрих-кодах (ШК) и сканерах.
+26
Портируем C/C++ библиотеку на JavaScript (xml.js)
7 min
21KTranslation
Статья является дополненным переводом статьи «HOWTO: Port a C/C++ Library to JavaScript (xml.js)» (автор: azakai). Автор оригинальной статьи имеет приличный опыт портирования C/C++ библиотек в JavaScript. В частности, он успешно портировал lzma.js и sql.js. В своей статье он описывает общую схему портирования C/C++ кода на примере libxml – открытой библиотеки для валидации XML.
+47
Преимущества Common Lisp
15 min
35KTranslation

Далее следует попытка выделить набор особенностей стандартного Common Lisp, кратко и с примерами.
Эта статья, вероятно, будет больше всего полезна тем, кто имеет какой-то опыт в программировании, заинтересован лиспом и хочет лучше понять, что делает его таким привлекательным.
Текст по большому счёту основан на списке особенностей CL и обзоре CL Роберта Стренда (Robert Strandh).
+73
Строим защищённую систему на основе TOR и I2P
5 min
77KВведение
В этом посте я попробую расписать по шагам о том, как построить защищённую систему для безопасного приёма, передачи, хранения и обработки конфиденциальных и иных опасных данных. Ни для кого не секрет, что сейчас различные лица и организации пытаются удушить свободу как самого интернета, так и его пользователей, и зачастую им это удаётся. Поэтому сейчас мы попробуем соорудить небольшую, но прочную крепость внутри нашего компьютера.
На провокации вида «при помощи такой системы можно слить гостайну врагу» я отвечаю сразу: при помощи ядерных ракет можно не только устроить конец света, но и отогнать или расколоть угрожающий нашей планете астероид.
+92
Материализм и эмпириокритицизм для системных администраторов
4 min
1.3K
Фантастика. В общем, в далеком прошлом существовала некая сверхцивилизация, уровень развития которой на основе интернета, техники и биологии позволил объединить людей в единую информационную сеть не требуя никаких дополнительных интерфейсов. Определенная перенастройка биологической структуры мозга, причем в конечном итоге включенная в ДНК и передаваемая по наследству, Вроде нынешнего Wi-Fi, но приемник и передатчик построены на синапсах и аксонах. Каждый обладатель такого усовершенствования имеет возможность непрерывной связи с ретрансляторами сети, пользуется их информационными и другими возможностями.
0
Что преодолевает сила инновации?
3 min
1.7KОписанию условий успешности инновации посвящено немало правильных слов и замечательных мыслей. Но вопрос природы сопротивления инновациям, на мой взгляд, незаслуженно обойден. Из смутности представлений происходит множество забавных и печальных продолжений: изобретатели полагаются на силы идей, инвесторы ожидают предложений с очевидными достоинствами, успешные внедренцы именуют инновациями тиражирование существующего…
Мне представляется, что не существует никакой другой силы, препятствующей инновации, кроме силы инерции сознания. Соответственно, единственный предмет, с которым необходимо взаимодействовать инноватору — сознание окружающих.
Мне представляется, что не существует никакой другой силы, препятствующей инновации, кроме силы инерции сознания. Соответственно, единственный предмет, с которым необходимо взаимодействовать инноватору — сознание окружающих.
+20
Внешние зависимости в гите: submodule или subtree?
3 min
56KДавным-давно я усвоил, что зависимости должны храниться вместе с кодом проекта. Тогда, при возврате к старой версии кода, гораздо проще восстанавливать окружение.
У моего проекта несколько зависимостей. Бóльшая часть зависимостей живет в гитовых репозиториях. Сам проект тоже живёт в гите.
Одна из используемых нами библиотек часто обновляется. Мы сидим на девелоперской версии, и нередко сами контрибутим в неё код, который требуется нашему проекту. То есть требуется оперативно пропускать наши правки через основной репозиторий этой библиотеки — создавать и поддерживать свой форк по ряду причин совершенно не хочется.
Раньше я просто копировал зависимости в папку проекта, и добавлял к каждой файл VERSION.TXT с её версией. Но, если нужно работать с текущей версией стороннего кода, это неудобно. Да и копировать файлы руками когда есть гит как-то глупо. Хочется найти более современное решение.
У моего проекта несколько зависимостей. Бóльшая часть зависимостей живет в гитовых репозиториях. Сам проект тоже живёт в гите.
Одна из используемых нами библиотек часто обновляется. Мы сидим на девелоперской версии, и нередко сами контрибутим в неё код, который требуется нашему проекту. То есть требуется оперативно пропускать наши правки через основной репозиторий этой библиотеки — создавать и поддерживать свой форк по ряду причин совершенно не хочется.
Раньше я просто копировал зависимости в папку проекта, и добавлял к каждой файл VERSION.TXT с её версией. Но, если нужно работать с текущей версией стороннего кода, это неудобно. Да и копировать файлы руками когда есть гит как-то глупо. Хочется найти более современное решение.
+27
Воронка продаж: делаем автоматически обновляемый отчет из базы данных с помощью Excel
6 min
9.9KЕсли вы продаете онлайн-сервис, вам, наверное, хотелось бы видеть, что происходит на каждом этапе воронки продаж. Из анализа воронки можно сделать важные выводы: насколько понятен и удобен процесс установки и начальной настройки приложения, как много и какие клиенты становятся активными пользователями сервиса, какой процент переходит с бесплатной версии на платную. Кроме того, по динамике коэффициентов конверсии можно делать вывод об эффективности принимаемых мер для увеличения продаж.
Под катом вы найдете описание некоторых приемов работы с Excel, которые могут быть полезны при анализе массивов данных. Мы расскажем, как мы ведем управленческую статистику по сервису jivosite.ru с помощью сводных таблиц Excel и подключения к MySQL через ODBC на примере отчета по воронке продаж. Предлагаемый способ довольно прост и универсален, с его помощью можно строить красивые отчеты за считанные минуты.
Под катом вы найдете описание некоторых приемов работы с Excel, которые могут быть полезны при анализе массивов данных. Мы расскажем, как мы ведем управленческую статистику по сервису jivosite.ru с помощью сводных таблиц Excel и подключения к MySQL через ODBC на примере отчета по воронке продаж. Предлагаемый способ довольно прост и универсален, с его помощью можно строить красивые отчеты за считанные минуты.
+21
Как умирал стартап
7 min
1.7KВведение:
Где-то полтора года назад столкнулся в проекте с рядом проблем, которые решить традиционным способом не получалось.
Пришлось проделать следующую «махинацию», под предлогом нового сотрудника в коллектив был внедрен – психолог, специалист по кадровому аудиту. Мы с ним успешно отработали несколько лет в перекрещивающихся проектах, он показал себя как хороший специалист, сложились хорошие отношения, но жизнь нас развела в разные области, его в область управления персоналом, а в частности кадровый аудит. Так что когда я ему рассказал, в чем проблема, он с радостью вызвался помочь.
Где-то полтора года назад столкнулся в проекте с рядом проблем, которые решить традиционным способом не получалось.
Пришлось проделать следующую «махинацию», под предлогом нового сотрудника в коллектив был внедрен – психолог, специалист по кадровому аудиту. Мы с ним успешно отработали несколько лет в перекрещивающихся проектах, он показал себя как хороший специалист, сложились хорошие отношения, но жизнь нас развела в разные области, его в область управления персоналом, а в частности кадровый аудит. Так что когда я ему рассказал, в чем проблема, он с радостью вызвался помочь.
+55
Microsoft StreamInsight — обработка потоков данных в реальном времени
6 min
10KКак я уже говорил, наша компания много работает с задачами real-time обработки данных. Решая различные задачи, мы сталкивались с довольно любопытными и интересными решениями, о которых порой на хабре никто попросту не писал. Вот об одной такой интересной системе мы сегодня вам и расскажем. Сделала ее компания Microsoft, называется она StreamInsight и представляет из себя реализацию так называемого паттерна Complex Event Processing. О том, что это и зачем нужно, мы подробно расскажем внутри.


+6
Программа для нарезки хлеба
1 min
3.3KTranslation

В средневековые времена программирования, к данным мы применяли функции. Для того, чтобы нарезать хлеб, брали структуру «хлеб» и передавали ее как параметр функции «нарезать»:
нарезать(хлеб);
+32
Порочный симбиоз пиратов и копирастов или как текстовый редактор перевернул моё мировоззрение
8 min
4.3K
Борьба пиратов и копирастов поляризует общество, создавая ложное впечатление, что нет никаких альтернатив двум крайностям. Одна крайность — та, которой придерживаются копирасты. Правообладатель может диктовать любые условия потребителю — что можно делать с произведением, что нельзя, сколько оно стоит, где и как его покупать. Другая крайность — пиратская — правообладатель не может ничего. Вся информация принадлежит всем и точка! Обе крайности деструктивны. Обе они убивают автора.
+128
Простой скринсейвер с использованием библиотеки CImg, C++
4 min
7.7KДоброго времени суток!
На этой неделе опубликовал статью, где привел краткое описание основных методов библиотеки CImg и разобрал простейший пример. Не скрою, пост был предназначен для инвайта, но тем не менее, старался сделать его как можно более информативным. Собственно говоря, как и было запланировано ранее и учитывая пожелание skor, решил попробовать написать элементарный скринсейвер с применением CImg. Стало интересно — добро пожаловать под кат!
На этой неделе опубликовал статью, где привел краткое описание основных методов библиотеки CImg и разобрал простейший пример. Не скрою, пост был предназначен для инвайта, но тем не менее, старался сделать его как можно более информативным. Собственно говоря, как и было запланировано ранее и учитывая пожелание skor, решил попробовать написать элементарный скринсейвер с применением CImg. Стало интересно — добро пожаловать под кат!
+3
Текст любой ценой: PDF
12 min
93KПродолжаем разбирать текстовые форматы на предмет получения текста. Итак, обещанный ранее PDF.
С portable document format'ом не всё так просто, как DOCX или ODT, что мы рассматривали в прошлый раз, но всё же это всё ещё изначально текстовый, а не бинарный формат. Вы удивлены? Тогда давайте посмотрим на то, что там внутри. Дальше действительно много текста.
С portable document format'ом не всё так просто, как DOCX или ODT, что мы рассматривали в прошлый раз, но всё же это всё ещё изначально текстовый, а не бинарный формат. Вы удивлены? Тогда давайте посмотрим на то, что там внутри. Дальше действительно много текста.
+73
По колено в PDF. PHP парсер с плюшками
9 min
12KТак получилось, что с месяц назад передо мной выросла совершенно неожиданная задача: сконвертировать PDF в html по имеющемуся шаблону. В том числе необходимо было разбивать все на страницы и выделять в них параграфы. Да и много еще чего. И все бы ничего, и обошелся бы я какой-нибудь левой библиотечкой, но кое-какие специфичные штучки-финтеплюшки, так необходимые мне, в библиотеках не нашлись. И это было печально…
+50
Information
- Rating
- Does not participate
- Location
- Москва, Москва и Московская обл., Россия
- Date of birth
- Registered
- Activity