четверг, 11 августа 2011 г.

Список программ, которые не надо писать.

По мотивам http://www.linux.org.ru/forum/talks/6596877
Если есть время и/или чешутся руки, то их надо... Ну ясен пень почесать. А если у программиста чешутся руки, то от зуда избавляются кодингом. И тут возникает проблема, на что обратить свое драгоценное внимание. Или кому приятно разгребать чужой код, или не дает покоя слава Торвальдса, но по какой то причине мало кто хочет присоединяться к существующим проектам. Все создают свои, новые.
Даже если очень хочется, то вот что писать не надо:
  1. Операционная система. Осилить проект размером с ядро  "Linux" мало кому под силу (да никому уже и не подсилу, ввиду размеров онного.). Если не верите, то взгляните на GNU HURD. или Minix. Второй живет и процветает, но не больше чем ОС для обучения студентов. А сколько напилено всяких "дискетных" операционок (Menuet OS, Kolibri OS). Такие вещи, как *BSD системы тоже никуда не делись. Только  с дровами проблема: они есть, но не под все железо и не всегда новые (привет владельцам видео от ATI и USB GSM  модемов).
  2. VCS. Если ОС не так много (большинство из которых сборки на базе существующих), то тут вообще зоопарк. git,mercurial,bazaar,cvs,svn,darcs... а про платные я и упоминать не стану.
  3. Офисные пакеты. Ну что тут сказать... их не так много, но ничего нового в это отрасли не открыли и все они являются неполными клонами продукта от MS.
  4. текстовый редактор. тут альтернатив, хоть закушайся. от sed до gedit и kate. А сколько клонов у emacs и vim? и это альтернативы не самых простых редакторов. Аналогами notepad можно печь топить. Для каждого "уважающего себя языка программирования" есть редактор написанный на нем самим.
  5. переписыванием существующего на python/ruby/javascript... в последнее время мания какая то: то git на c# или javascript перепишут, то grep на ruby, то pdf читалку на javascript (секта какая то). Зачем? Зачем все это, если можно сделать привязку к существующим библиотекам на с/с++ (за исключением javascript. тут неувязочка выходит)?
  6. Браузеры. Их не так много, если сравнивать с текстовыми редакторами, но куча уже образовалась. Я не говорю про те, что со своим движком и "инфраструктурой". Я про те, что на WebKit. Самой главное, что друг от друга они не различаются.
  7. файловый менеджер а-ля "commander". Их не так много, как текстовых редакторов, но принципиально нового тут открыть нельзя(ну или практически нельзя), а клепать очередной Total только хуже не стоит.
  8. IDE для java. В одиночку такое не осилить. Взгляните на Eclipse и компанию и поймете о чем я.
  9. IM (ICQ,Jabber....). Сотни альтернатив, даже если не считать проприетарные.
  10. mp3 плеер. Есть такие монстры как Banshe и Amarok, есть легкие Deadbeef и mpd. Есть пара-тройка WinAmpов.
  11. Photoshop. Тут альтернатив такого уровня мало. почти нет (если Gimp не рассматривать), а для простых смертных подойдет и то, что есть в DigiKam и его гномьем аналоге.
  12. torrent клиент. Ну тут их сколь угодно. И почти все написаны с использованием одной библиотеки.
Это, конечно, все мое имхо. Но я думаю, что писать очередной "мега ****, такой же, как  **, только другой" не стоит.

    вторник, 2 августа 2011 г.

    double2string

    Варианты конвертации double в string:

     
    String.Format("{0:0.00}", 123.4567);      // "123.46"
    String.Format("{0:0.00}", 123.4);         // "123.40"
    String.Format("{0:0.00}", 123.0);         // "123.00" 
    String.Format("{0:0.##}", 123.4567);      // "123.46"
    String.Format("{0:0.##}", 123.4);         // "123.4"
    String.Format("{0:0.##}", 123.0);         // "123"
    String.Format("{0:0.0}", 0.0);            // "0.0"
    String.Format("{0:0.#}", 0.0);            // "0"
    String.Format("{0:#.0}", 0.0);            // ".0"
    String.Format("{0:#.#}", 0.0);            // ""