Новости информационных технологий - 25714

На небольшом примере я расскажу как используя библиотеку TPL Dataflow можно решить довольно не тривиальную задачу многопоточной компрессии файлов в течении 15 минут.
Задача

Необходимо реализовать эффективную компрессию файлов используя класс GZipStream находящийся в пространстве имён System.IO.Compression. Предполагается, что сжимать мы будем файлы большие, и их нельзя уместить целиком в оперативной памяти.
TPL Dataflow
TPL Dataflow (TDF) построена поверх вошедшей в .NET 4 библиотеки TPL (The Task Parallel Library) и дополняет ее набором примитивов, для решения более сложных задач чем исходная библиотека. TPL Dataflow использует задачи,Читать полностью »

Поводом опубликовать пост стало то, что при детальном изучении списков (массивов) в Python я не смог найти в сети ни одного простого описания метода сортировки элементов с использованием ключа: list.sort(key=...).
Может быть, конечно, это мне так не повезло и я долго понимаю простые для всех вещи, однако я думаю, что приведенная ниже информация будет весьма полезна таким же начинающим питонистам, как и я сам.
Итак, что мы имеем. Предположим, у нас есть список, который мы бы хотели отсортировать — и состоит он из трех строк разной длины в определенной последовательности:sortList = ['a', 'сс', 'bbb']
Сортировка элементов массива методом .sort()Читать полностью »

В одном из проектов мне понадобилось разобрать HTTP Range запрос, чтобы добавить поддержку загрузки файлов по частям. В сети полно различных примеров, но я так и не нашел ни одной полной реализации RFC 2616. Один код не учитывал, что диапазонов может быть несколько, другой, что стандарт допускает запросы больше размера документа, третий не различает синтаксически правильный и недостижимый запрос, как рекомендует стандарт. Поэтому я решил написать свою реализацию и поделиться со всеми. Подробности и пример реализации на PHP под катом.

Как гласит стандарт, запрос диапазона состоит из двух частей:Читать полностью »

В релизе 1.1.8 PHP-фреймворка Yii появилcя дополнительный метод в классе CActiveRecord для работы со счетчиками, а именно saveCounters. Наверное, многие из вас читали о нем в анонсе релиза. Под катом я расскажу в чем его крутость и почему стоит его использовать. Возможно, после прочтения вы побежите рефакторить свой код.
Прочитав в анонсе о появлении saveCounters я подумал, что это просто обертка для имеющегося функционала. Ни в документации на метод, ни в руководстве по улучшению производительности ничего не говорилось о каких-либо его особенностях в плане скорости. В общем, прочитал и забыл.
Часто попадаются задачи, в которых какие-то данныеЧитать полностью »

Выпустившись восемь лет назад из питерского Бонча (он же — Университет телекоммуникаций), я никак не подозревал, что сам займусь преподаванием. Тем не менее, моя мятущаяся, и совсем, пожалуй, не технарская душа, привела меня на должность преподавателя в довольно крупной — питерской же — конторе, занимающейся разработкой самого разнообразного софта для операторов сотовой связи. Мой более чем пятилетний трудовой путь в ней заканчивается, и по горячим следам я решил дать несколько простых советов, которые, смею надеяться, облегчат жизнь тем, кому по служебной или иной необходимости нужно будет передать свои драгоценные знания. Они содержатЧитать полностью »

Как-то раз загорелось мне купить пару брендовой обуви, на которую я заранее отложил свои кровные деньги. А так как я сам несколько лет занимаюсь продажами через интернет, решил поддержать своего коллегу, виртуального торговца, приобретая необходимый мне товар в одном из интернет магазинов.
Долго не мог выбрать, в каком магазине мне отовариться, так как некоторые никогда не закупали такую обувь, а другие предлагали оформить эту злополучную пару обуви на заказ, что меня, естественно, не устраивало. Спустя несколько часов я наконец-таки набрел на приличный интернет магазин, который отвечал всем моим требованиям.
После того, какЧитать полностью »

Ближе к двум часам ночи в голову в месте с мыслями о вечном приходят не менее вечные вопросы — «в чём смысл жизни ?», «зачем вообще человеку спать ?» или «Какого чёрта эта #%^$ не работает ?» и чем ближе утро, тем сильнее начинает волновать именно этот самый последний вопрос.
Чуть ниже я расскажу о том какого чёрта сss селекторы иногда не ведут себя так, как нам кажется правильным, и о том как они на самом деле должны себя вести.
Глава один – идём направо!

Селекторы взвешивают, чтобы узнать какой из стилей будет примененен, когда несколько селекторов так или иначе указывают на один и тот же элемент, и пытаютсяЧитать полностью »

Qt Software / Портирование игры на Nokia N9
В этой статье речь пойдет о портировании игры Forest Tower Defense на телефон Nokia N9.
Я хорошо знаком с Qt, но плохо с QML, к счастью мне полностью удалось избежать его использования в приложении (да, это возможно!). Весь код в этой статье будет на C++, олдфаги одобряют.
Окно

Главное и единственное окно игры — это QGLWidget
class Widget : public QGLWidget, public Platform
{
Q_OBJECT
//...

Что такое Platform, и как проектировать кросплатформенные игры, можно почитать тут.
Графика

Все рисование происходит в QWidget::paintEvent
void Widget::paintEvent(QPaintEvent *)
{
QPainter painter(this);
m_painter = &painter;

Application::instance().render();

flushFragments();
}

Хочу поделитьсяЧитать полностью »

Планшеты / Ainol Novo 7 Paladin — MIPS-планшет на Android 4 ICS
Примечателен этот планшет в первую очередь своей ценой, которая колеблется в районе $100. Ну и конечно, достойными характеристиками за такую цену.
Компания ainol сделала интересный ход в сторону избавления от господства ARM-архитектуры в мобильных устройствах — начала массово выпускать планшеты, использующие MIPS-процессор.
Итак, герой нашего сегодняшнего обзора, Ainol Novo 7 Paladin
И его характеристики:Процессор: Ingenic JZ4770 XBurst, 1 ГГц; GPU: GC860
Операционная система: Android 4.0.3
Память: 512 Мб/8 Гб
Экран: 7 дюймов, емкостной мультитач на 5 касаний, 800 х 480
GPS: Нет
Камера: Нет
Bluetooth: Нет
WIFI: 802.11 b/g/n
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js