Search
Write a publication
Pull to refresh
0
0
bobic @bobic

User

Send message

Lazy<T>: конструирование объектов по требованию в .NET 4.0

Reading time2 min
Views16K
Мне нравится, когда я нахожу новые части функциональности в .NET framework. Это все те большие интересности, которые получают всю любовь и признание на конференциях и в журналах.

Lazy<T> как раз один из таких.
Читать дальше →

Управление проектом на одной странице (таблица из одноименной книги К. А. Кэмбэлла)

Reading time1 min
Views54K
Только дочитал означенную в названии топика книгу. Она предлагает очень интересную и удобную схему для ведения проекта. Фактически, это – несколько усложненная диаграмма Ганта.

Однако я предположил, что таблица уже созданная в Excel будет многим хабравчанам удобна. Сама по себе книга имеет ценностью на 80-90 % в этой схеме. Но, думаю, без первоисточников вполне можно справиться с изучением данной диаграммы, тем более, что на официальном сайте издательства она представлена как:
Читать дальше →

Тонкости перегрузки методов по константности *this

Reading time4 min
Views4.1K
dress11.jpg - image uploaded to PicamaticОбнаружил, что есть аспект работы C++, о котором я раньше как-то не задумывался. А именно: если у вас есть две реализации одного метода (перегрузка), отличающихся константностью *this:
    int & v();
    const int & v() const;

когда и какой метод будет вызываться?
Ночью было время подумать.

Сапер на GWT

Reading time8 min
Views7.3K
Недавно прочитал топик пользователя nsinreal, который предложил реализацию сапера на батниках. Так как я совсем недавно начал знакомство с GWT и вообще с явой, решил написать своего сапера с блэкджеком и прочим :) Попутно, расскажу про реализацию и проблемы, с которыми столкнулся.

Итак, yaminesweeper.appspot.com. Сделал на выходных, так что не бейте за простой вид и некоторые баги, о который напишу ниже. Исходники вы можете найти здесь: http://github.com/wargoth/yaminesweeper.

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

Из багов отмечу:
  • общая кривость в ИЕ (решается)
  • кривость в опере (проблемы с переопределением поведения при нажатии средней и правой клавиш мыши)

Планируется сделать:
  • быстрое открывание полей через одновременное нажатие левой и правой клавиш мыши (сейчас только средней клавишей)
  • оптимизировать алгоритмы (сейчас все-таки не так быстро работает, как хотелось бы)
  • улучшить внешний вид

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

Текст любой ценой: PPT

Reading time3 min
Views5.1K
Некоторое время назад мы с вами обсуждали получение чистого текста из различных форматов данных: будь то PDF или DOC. В одном из обсуждений был высказано предположение, что при парсинге презентаций PowerPoint я заработаю геморрой или другую страшную болезнь мягкой точки. Что ж, волей судеб мне пришлось доставать текст и из этого «сладенького» формата. Скажу честно, геморрой заработать не удалось, а вот класс для парсинга презентаций вышел.
Читать дальше →

Делаем мэш-ап Twitter'а и Google Maps за 20 минут на Grails

Reading time14 min
Views3.4K

Введение


Для многих разработчиков Java часто является синонимом ужасно занудных корпоративных приложений. Она ассоциируется с многочисленными конфигурационными файлами формата XML, шаблонным кодом и т.д. Поэтому как правило вместо нее разработчики используют динамические языки (такие как Ruby, Python, PHP) для разработки своих проектов, особенно для простых утилит, мэш-апов и т.п.

Однако в среде Java многое изменилось за последние несколько лет. Появилось много фрейморков освобождающих разрабочика от бремени корпоративных («энтерпрайзных») приложений. Grails вероятно — один из лучших. Он основан на Groovy, динамическом языке на платформе Java. Groovy создан специально для Java-программистов и переход на него максимально безболезненый. Grails используе хорошо известные, надежные и эффективные библиотеки Java (Spring, Hibernate и т.п.) для выполнения всей тяжелой работы. Существует также система плагинов и плагины для почти для всех широко используемых библиотек Java.

В этом посте я раскажу, как сделать мэш-ап из Twitter'а и Google Maps в течении всего 20 минут. Конечный результат будет выглядеть примерно следующим образом:
Geo Twitter Complete

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

Преобразование FB2 в XHTML с сохранением вложенных рисунков

Reading time4 min
Views9K
Возникла у меня небольшая необходимость преобразовать книги в формате FB в xhtml.
Ну ясное дело я полез на www.gribuser.ru/xml/fictionbook/2.0/xsl/export где и взял файл
FB2_2_xhtml.xsl (заодно захватил FB2_2_txt.xsl мало ли в текстовом виде понадобится книжку получить )
Попробовал сконвертировать книжку, и заметил маленькую проблемку, рисунки то пропали. :(
В принципе рисунки не главное в книжке, но все равно немного обидно. Поэтому полезем разбираться в чем проблема.
Читать дальше →

ХХ полезных советов для пользователей Git среднего уровня. Часть 1

Reading time4 min
Views26K
Вообще-то изначально я планировал перевести статью Энди Джеффриса (Andy Jeffries) 25 Tips for Intermediate Git Users, но в процессе я отбросил бестолковые, общеизвестные или самые простые советы вроде «настройте первым делом user.name и user.email», которые явно не подходят людям, уже более-менее плотно знакомым с Git.
Взамен я дополню статью моментами из личной практики («Своя практика»! Звучит здорово, будто я частный врач или адвокат! :-] )

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

Работа с массивами в bat

Reading time6 min
Views57K
Прочитав пост Свой сапер на своих батниках и пробежавшись по коду, наткнулся на комментарий, что в батниках нет массивов (кстати, в последней версии Сапера, о котором идёт речь в том посте, нет этого комментария). Так вот, если в батнике необходимо использовать некоторый набор значений, то логично объявить такое кол-во переменных, которое требуется и работать с ними. Собственно данный сценарий эту задачу помогает решить проще. Вот несколько примеров:

echo Создание массива А:
call :array new A "'one','two','three','foo','bar'"
echo Получение третьего элемента в result:
call :array get A 3 result
echo %result%
echo Изменение нулевого элемента
call :array set A 0 "первый элемент"

подробнее

mod_rewrite: Просмотр списка правил только один раз

Reading time1 min
Views6.8K
С mod_rewrite есть одна проблема, об которую набиты уже наверное 15 миллионов шишек: он просматривает список правил снова и снова, пока URL удается хоть как-то изменить.

Очень часто получаеются и бесконечные циклы(например добавление расширения — оно добавляется снова и снова, если специально регэкспом не ограничить), над которыми с непривычки приходится поломать голову. Все надежды на модификатор [L] тщетны — он лишь сразу запускает следующую иттерацию обработки. Да и без бесконечного цикла лишние иттерации скорости работы не добавляют :-)

Хочу поделится достаточно простым и универсальным средством борьбы с такой особенностью, который обнаружил только-что :-)

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

Цепной квайн произвольного порядка на Python

Reading time3 min
Views1.7K
   Впечатленный цепным полиглотным квайном японца, приведенным в этом хабратопике, я, ранее уже встречавшийся с программами-квайнами, решил познакомиться с ними плотнее. После беглого гугления и непродолжительного чтения вики/блогов/сайтов по теме, у меня зачесались руки и захотелось написать свой квайн. Квайн был написан, даже в нескольких вариантах, но этого мне показалось мало. Позже я даже написал двойной квайн (код на python генерирует код на prolog а код на prolog в свою очередь первоначальный python-код).

   Однако, тут возник вопрос. А можно ли написать квайн любого порядка (т.е. тот, который будет переходить сам в себя после N запусков)? Как оказалось, это вполне возможно. Результатом изысканий явился следующий код:

# xonix
L=19;B,Q,N,q,n=map(chr,(36,81,78,39,10))
X='import sys;sys.stdout.write(%s%s%s.replace(chr(36)+chr(81)+chr(36),chr(39)).replace(chr(36)+chr(81),chr(36)).replace(chr(36)+chr(78)+chr(36),chr(10)).replace(chr(36)+chr(78),chr(36)))'
Y='# xonix%sL=%s;B,Q,N,q,n=map(chr,(36,81,78,39,10))%sX=%s%s%s%sY=%s%s%s%sE="""%s""";exec E%simport sys;sys.stdout.write(b())'
E="""def b(l=L):
  if l==L: Ql=q
  else: Ql=B+Q*(L-l)+B;Nl=B+N*(L-l)+B
  if l>0: return X%(Ql,b(l-1),Ql)
  else: return Y%(Nl,str(L),Nl,Ql,X,Ql,Nl,Ql,Y,Ql,Nl,E.replace(n,Nl),Nl)"
"";exec E
import sys;sys.stdout.write(b())


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

Расстановка дефисов, минусов, тире и кавычек

Reading time3 min
Views77K
Вопросы правильной расстановки дефисов, длинного и короткого тире, знака минуса, кавычек-елочек и кавычек-лапок уже неоднократно поднимались в интернете и на Хабре в частности (см. ссылки ниже). Однако по-прежнему, студенты и аспиранты в своих курсовых и дипломных, диссертациях и авторефератах не уделяют достаточного внимания типографике.

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

Со временем возможно появятся похожие таблички с правилами расстановки пробелов, знаков препинания и по оформлению текста в целом.

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

Свой сапер на своих батниках

Reading time6 min
Views14K
image

Однажды захотелось мне написать Minesweeper… на батниках. И я его написал.

Встречайте!!! Minesweeper for cmd.exe

Итак, особенности данного продукта:
  • Оригинальное лого
  • Двухцветный текстовой графический интерфейс (фон — чёрный, текст — серый)
  • Возможность воспроизведения программы практически на любом компьютере
В общем, это настоящий сапер (а не те жалкие подобия — KMines и сапер for Windows) для настоящих мужчин. И далее вы сможете прочитать как сделать свой крутой сапер.
Читать дальше →

Автоматизация изменений БД в .NET

Reading time5 min
Views6.1K
Здравствуйте!
Я хотел бы рассказать о проектах Migrator.Net и ECM7.Migrator.

Migrator.Net — это механизм контроля версий базы данных, похожий на Migrations в Ruby on Rails. Migrator позволяет автоматизировать выполнение операций изменения БД и автоматически ведет учет версий.

Migrator написан на C# и будет удобен, в первую очередь, при использовании в проектах под.NET.

Сначала я сделаю небольшой обзор указанных проектов, а потом постараюсь выделить их «плюсы» и «минусы».

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

Riak — веб-ориентированная система хранения данных

Reading time9 min
Views32K


Немного статей на хабре посвящены новому движению в IT индустрии — NoSQL. Я решил изменить это и написал статью-перевод-обзор об одном из докладов с конференции NoSQL прошедшей 5 октября в Нью-Йорке. В этой статье будет говорится о системе Riak, с которой мне довелось иметь счастье работать последнее время.

Что такое Riak? Многие модные слова популярные сейчас, можно отнести к Riak. Riak — это документно-ориентированная база данных. Riak — это децентрализованное key-value хранилище данных, с поддержкой стандартных операций — get, put и delete. Riak — это распределенное, масштабируемое, отказоустойчивое решение для хранения информации. А так же Riak — это система с открытым исходным кодом и поддержкой обращений с помощью HTTP, JSON и REST. Ну и конечно RIAK — это NoSQL.

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

Точное время: измеряем, применяем

Reading time12 min
Views40K
   Цель данной статьи – изложить, полученный в ходе работы над проблемой материал о способах максимально точного измерения времени и использования на практике этих способов, а также рассмотреть варианты управления чем-либо программным с максимально достижимой точностью.

   Статья рассчитана на читателей, уже имеющих некоторый опыт в программировании, и заметивших проблему точности выдержки временных интервалов стандартных функций. Автор статьи, begin_end, советует её читателям, программирующим на языке Delphi, так как все способы реализуются именно на этом языке.

   Наша задача – найти лучший метод точного измерения малых временных интервалов (желаемая точность – 10^-6 секунды), определить наиболее эффективный способ программирования задержек в исполнении кода, с такой же точностью.

   Программист, который уже пробовал разрабатывать различные прикладные приложения, например, связанные с передачей данных или с генерацией/анализом сигналов мог заметить, что все стандартные функции (sleep, beep, GetTickCount, таймеры) обладают большой погрешностью при работе с малыми значениями временного интервала.
Читать дальше →

Программирование микроконтроллеров PIC16/PIC18 на языке C. Статья третья. Немного о железе

Reading time2 min
Views29K
Все то оно хорошо, когда мигает в симуляторе светодиод, но неплохо бы посмотреть на это действо вживую.
Расскажу коротко об аппаратной части сего процесса.
Читать дальше →

Организация on-line платежей на сайте. Для тех, кто никогда этим не занимался, но боится, что придётся

Reading time2 min
Views4.2K
Я хочу поделиться простым взглядом на сложные вещи.
Отлично помню своё первое столкновение с on-line платежами. Тогда меня такая задача морально напрягала: мало того что на мне ответственность за чьи-то деньги, так я ещё и не понимаю даже обычной банковской системы, что уж говорить о виртуальной.
Хорошо, если бы мне тогда кто то сказал...

Математическая поисковая система Uniquation

Reading time4 min
Views2.8K
Mы только что открыли α-тестирование проекта Uniquation. Это математическая поисковая система, которая ищет решения среди уравнений, равенств и прочих математических объектов, размещенных в интернете. На текущем этапе развития её можно мыслить как развивающуюся CAS (wiki). Помимо этого поста про неё можно прочитать в нашей презентации.

image


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

Information

Rating
Does not participate
Location
Россия
Registered
Activity