2008-06-13
True Crypt
Subj смотрится очень даже неплохо. Хочу попробовать. Кто пользовался, какие подводные камни, как вообще впечатление?
2008-06-11
2008-06-10
2008-06-05
Цены на бензин
Хоть меня и закидают пустыми канистрами, но я скажу - мне подорожание бензина кажется явлением положительным. Я ещё восемь лет назад сказал, что он должен стоить как минимум баксов пять за галлон. А сейчас я думаю, что и десять вполне нормально.
Очень бы хотелось, и я готов за это заплатить своими деньгами, уменьшить автомобилизацию окрестностей. Я не знаю как ещё заставить народ прекратить ездить на танках на работу, кроме как сделав это невыгодным.
Везде постоянно расширяют дороги и тратят на это бюджет. Я бы предпочёл, чтобы вместо расширения дорог, на те же деньги, увеличили количество общественного транспорта и построили велосипедные дорожки, которые несравнимо дешевле. Но этого не произойдёт, пока нет массовой потребности. Или, например, сервис моего скутера встал дороже сервиса машины. Причина опять же в не массовости скутеров. Будет их больше - будет дешевле.
Вообще, все вещи имеющие экологические последствия должны быть дороже. Надо уменьшать потребление энергии и переходить на альтернативные источники. Верхом ездить на работу было бы классно. Конюшню открыть при нашем Алкософте. Заодно и навоз могли бы производить настоящий, помимо виртуального.
А в Москве жгут машины. А журналисты гадают: кто жгёт, кому выгодно? Неужели не понятно? Жгёт кто-то, кого достали все эти машины. Бессмысленно и беспощадно, как всегда. В Москве вообще уже не пройти и ни проехать, машины стоят просто везде.
Business value of Windows Vista.
Микрософт родил очередное послание корпоративным клиентам. На первой странице оного, в традициях современного корпоративного дизайна, некие люди изображают работу. Обычно люди на обложках улыбаются, но в данном случае, они, похоже, пытаются работать с Вистой, а потому серьёзны и мрачны. Видно, что у них не получается. Что успокаивает. Не только у меня не получается. Обычно проковырявшись с очередным сетапом хочется запустить чем нибудь в эти радостные лица, которые явно смеются над тобой.
В тексте послания объясняется, что нет смысла ждать Windows 7, поскольку лучше не будет. Микрософт не будет никого слушать и не будет ничего менять, наша система лучшая в мире, и никакого выбора у потребителя не будет.
Я было подумал, ну и хрен с ними, можно поставить XP в виртуальную машину, отрубить ей сеть и работать спокойно безо всяких обновлений. Но ведь они могут и активацию закрыть. Этого я пока не понял, закроют или нет. Если закроют, я откачусь на W2K.
Честно говоря, на месте корпоративных клиентов я бы вообще выкинул Windows и поставил Линукс. Это индивидуальному клиенту сложно разбираться, и в игры хочется играть, а у корпоративных есть IT Department. И технику можно протестировать на совместимость перед массовыми закупками, и свой образ для быстрой сетевой установки сделать вместе с приложениями, и техподдержку оказывать и народ обучать. Игры не работают - и не надо. Зато никакого ковыряния с лицензиями и активациями. Нужна ещё одна машина - берём и ставим.
2008-05-28
Невыполнимая миссия
Чтобы чего-то добиться фирма должна иметь и осознавать некую миссию, которая отлична от простого зарабатывания денег. Деньги должны быть лишь следствием выполнения миссии. Например, поставить персональный компьютер каждому голодному, или проиндексировать всё, что шевелится, или создать лучшую программу в своей нише, или дать каждой семье отдельную квартиру к 2000 году.
Это не слоган, типа "измени жизнь к лучшему". Слоган - это бессмысленная рекламная херня, работающая через подсознание. Миссия же - вполне сознательно сформулированая цель.
Если миссии нет, её начинают заменять слоганы и процесс становится самоцелью. Начинаются всякие "software is about collaboration". Collaboration - средство, инструмент, но вовсе не цель. Начинаются всякие шатания, типа зачем что-то делать, давайте лучше работать с пользователями, или давайте вложим деньги куда нибудь, может нам купить кого-нибудь. Начинаются игры в деятельность: cмотрите, у них какая штука, мы тоже такую сделаем, будет лучше настоящей.
Все компании добившиеся чего-то имель неденежную цель, деньги приходили потом, когда эта цель создавала новый рынок. Компании без цели - зомби, которые существуют только за счёт инерции рынка. Они уже ничего нового не создают, но выискивают свежие ростки и немедленно пожирают их, постепенно превращая индустрию в пустыню.
P.S. Навеяно посещением "standup meeting".
2008-05-25
Kangaroo Farm
2008-05-24
2008-05-20
Microsoft about Vista
> Windows Vista is doing a lot more than Windows XP, and it requires resources to conduct these tasks.
В этом то и проблема, что она делает больше. Мне не надо ничего из этого "делания", я бы предпочёл, чтобы она "делала" меньше, ничего не делала. Всё, что хочется от операционной системы - это возможности выполнять нужные мне программы и работать с железом. Идеально - это когда OS не видно, когда совершенно не ощущается, что она что-то "делает", когда просто "всё работает".
Я обычно трачу усилия на то, чтобы выкинуть что-то из OS, остановить ненужные сервисы, деинсталировать ненужные программы, а поставить другие, те которые я выбрал, которые обладают нужной мне функциональностью. Последний пал Explorer (причём "пал" буквально), в результате я заменил стандартный shell на bblean, чем и доволен. Фактически это привело к тому, что больше нет на экране видимых окон, принадлежащих Windows. Нет вообще.
2008-05-19
В Spokane всё спокойно
2008-05-07
Выбор домашнего сервера
2008-05-05
Google calculator
Subj, в принципе, очень удобная вещь. В поисковой строке можно набрать формулу с величинами, имеющими размерности и всё будет корректно посчитано и переведено.
pi*(3mm^2) in inch^2: pi * (3 (mm^2)) = 0.0146084351 inch^2
Мой сын на нём считает задачки по физике. Калькулятор знает многие физические константы, может перевести результат в нужные единицы, а то, что единицы совпали, является дополнительной проверкой.
Я когда увидел, попробовал и мне очень понравилось. Я когда-то тоже делал похожую штуку. А потому знаю где лежат одни грабли. И заглянув в заветное место увидел грабли в целости и сохранности. Вот они. Но Гугл зделал их ещё занятнее.
(0 Celsius - 0 Celsius) in Celsius: (0 degree Celsius) - (0 degree Celsius) = -273.15 degrees Celsius
0 Celsius + 0 Celsius: (0 degree Celsius) + (0 degree Celsius) = 273.15 degrees Celsius
0 Celsius *3: (0 degrees Celsius) * 3 = 546.3 degrees Celsius
Собственно, объяснение простое, но сначала ещё один пример:
0 Celsius - 0 Celsius: (0 degrees Celsius) - (0 degrees Celsius) = 0 kelvin
Гугл не умеет работать с размерностями со смещённым нулём. Для абсолютных единиц типа температуры бывают шкалы, гне нуль смещён. Например, температура Кельвина - абсолютная, а Цельсия и Фаренгейта - относительные. Вычитая относительные величины, скажем градусы Цельсия, мы получаем новую размерность - интервал температуры в градусах Кельвина или Цельсия. Очевидно, что переводя интервал в градусы Цельсия не надо прибавлять смещение в 273 градуса. Этим интервал отличается от значения температуры.
Сумма относительных температур должна оставаться в тех же единицах. Т.е. не надо два раза прибавлять смещение. Надо сначала сложить, а затем уже преобразовать размерности. Либо рассматривать одно из слагаемых как интервал, добавляемый к абсолютной величине, что математически то же самое.
В принципе, не очень часто приходится иметь дело со смещёнными размерностями. Температуры да шкалы времени, и, кажется, всё. Так что калькулятор вовсе не плох. Однако с температурами они прокололись. Слишком много сил ушло на попугаев.
Никто не знает, как Гуглу баг зафайлить?
pi*(3mm^2) in inch^2: pi * (3 (mm^2)) = 0.0146084351 inch^2
Мой сын на нём считает задачки по физике. Калькулятор знает многие физические константы, может перевести результат в нужные единицы, а то, что единицы совпали, является дополнительной проверкой.
Я когда увидел, попробовал и мне очень понравилось. Я когда-то тоже делал похожую штуку. А потому знаю где лежат одни грабли. И заглянув в заветное место увидел грабли в целости и сохранности. Вот они. Но Гугл зделал их ещё занятнее.
(0 Celsius - 0 Celsius) in Celsius: (0 degree Celsius) - (0 degree Celsius) = -273.15 degrees Celsius
0 Celsius + 0 Celsius: (0 degree Celsius) + (0 degree Celsius) = 273.15 degrees Celsius
0 Celsius *3: (0 degrees Celsius) * 3 = 546.3 degrees Celsius
Собственно, объяснение простое, но сначала ещё один пример:
0 Celsius - 0 Celsius: (0 degrees Celsius) - (0 degrees Celsius) = 0 kelvin
Гугл не умеет работать с размерностями со смещённым нулём. Для абсолютных единиц типа температуры бывают шкалы, гне нуль смещён. Например, температура Кельвина - абсолютная, а Цельсия и Фаренгейта - относительные. Вычитая относительные величины, скажем градусы Цельсия, мы получаем новую размерность - интервал температуры в градусах Кельвина или Цельсия. Очевидно, что переводя интервал в градусы Цельсия не надо прибавлять смещение в 273 градуса. Этим интервал отличается от значения температуры.
Сумма относительных температур должна оставаться в тех же единицах. Т.е. не надо два раза прибавлять смещение. Надо сначала сложить, а затем уже преобразовать размерности. Либо рассматривать одно из слагаемых как интервал, добавляемый к абсолютной величине, что математически то же самое.
В принципе, не очень часто приходится иметь дело со смещёнными размерностями. Температуры да шкалы времени, и, кажется, всё. Так что калькулятор вовсе не плох. Однако с температурами они прокололись. Слишком много сил ушло на попугаев.
Никто не знает, как Гуглу баг зафайлить?
2008-05-02
Куда их совать-то?
Та же проблема, что и в анекдоте про свечки, существует в программировании и особенно в ООП языках.
Допустим есть у нас набор объектов, скажем драйверы разных графических адаптеров. И другой набор объектов, скажем графические примитивы: линии, окружности, многоугольники. И решили мы нарисовать одно на другом. И написали для этого код. Всё уже почти работает, но перед нами встала архитектурная проблема: куда засунуть метод? В C#, например, функция должна быть в классе. Можно определить, конечно, класс с одним (или несколькими) статическим методами, но заклюют за недостаток архитектурности.
Можно засунуть в графический примитив. Сделать у каждого метод Draw. А можно наоборот, в драйвере сделать виртуальные DrawLine и DrawCircle. Оба решения имеют недостатки. Например, примитивы могут быть вообще не классами, а структурами и методы рисования на конкретного вида устройствах там создают ненужные зависимости. А драйверы потому и драйверы, что не содержат всякой высокоуровневой логики. Надо сделать визитора, скажут прочитавшие Design Patterns или wrappers для примитивов, или ещё один уровень поверх драйверов, и понеслось.
Что интересно, раздумья эти с точки зрения выполнения кода не очень интересны, код всё равно будет один и тот же. Это скорее предмет для бурного обсуждения на API review meeting. Что наводит на мысль, что это вообще ненужное размышление. Это плата за ООП и его упрощённую модель, когда метод принадлежит только одному классу.
Логически у нас есть операция нарисовать одно на другом и некоторая матрица кодов, которые выбираются исходя из некоторых условий. Старый С-программист сделал бы функцию a la printf с форматной строкой и большим switch внутри и не был бы сильно неправ. Компьютер бы полюбил такой код за компактность, но архитект бы поморщился от такой примитивности и неархитектурности. Независимый С++-программист просто написал бы набор функций.
Я не буду сейчас пока описывать как я представляю хорошее решение данного примера на разных языках. Моя мысль дня была в том, что ненужные с точки зрения кода рассуждения вероятно не нужны вообще и их наличие - недостаток архитектуры.
А навеян пост продолжением чтения книжки про Руби и обнаружением в классе numeric метода, повторяющего блок N раз. Блин, оператор цикла - метод в классе целого числа. Зачем он вообще метод? "А потому!" - скажет автор, и будет по-своему, по-авторски, прав. Хочу тоже быть автором.
О высоком
В очередной раз удивившись потребности некоторых коллег испытывать к работодателю трепетное чувство верности, я подумал, что моё предыдущее объяснение этого явления не годится. Конечно, это спокойнее, но сила ненависти, которая обрушивается на усомнившегося в идеалах больше, чем объясняло бы сохранение душевного спокойствия или нежелания анализировать. Причём чем моложе собеседник, тем сильнее иррациональность чувства, что явно наводит на мысль об общности механизмов с другими человеческими инстинктами. А ведь скорее всего опять проявляется инстинктивное поведение.
Человек - стайное животное, В стае интересы стаи важнее личности, отсюда и верность и самопожертвование. Отсюда же потребность принадлежности стае и депрессия от отсутствия таковой. Поэтому инстинктивные психологические механизмы, защищающие продление рода, переносятся на вожака. В бою вожаку надо верить, чтобы спасти стаю, даже ценой собственной гибели. Гены твоих выживших детей это запомнят. Может отсюда же и религия? Часто говорят, что человеку свойственно верить. И поэтому либо та религия либо другая. Я всегда считал это пропагандой, но сегодня задумался: может действительно свойственно?
2008-05-01
Жгун
Замечательно мужик рисует. Лица получаются отлично. И детали. И написал в одном из постов, что ищет работу, только не web-дизайн и не фирменные стили. Да уж, конечно! С таким талантом надо чем нибудь дельным заняться. Весь этот web-дизайн, в принципе, как и все эти "фирменные стили" есть просто распальцовка и ничего больше.
Вот смотрю на продукцию самой известной российской дизайнерской фирмы и ничего кроме распальцовки не вижу. Неудобная клавиатура за несколько тысяч, какие-то странно уродливые и неудобные дизайны, херня какая-то. А вот у меня под рукой мышь no-name. Самая приятная изо всех, которые видел. Купил за 12 баксов в несуществующем больше магазинчике. Искал, кто делал, так и не нашёл. Да и как найти, когда всей информации на бирке "Optical mouse, made in china". И всё!
Нет, не надо идти в web-дизайн. Лучше книжки оформлять. Хотя бы и онлайновые.
2008-04-30
Утиная типизация
Пост навеян чтением книжки про Руби. Язык неплохой, но, на мой вкус, немного пересолён объектной идеологией вкупе с ритуальным юниксизмом. Дочитал до утиной типизации.
Есть языки со статическими типами, когда типы вычисляются во время компиляции (С, С#, Java etc.), есть с динамическими, когда переменная может содержать любой тип и во время компиляции он не известен и даже может быть изменён присваиванием значения другого типа (JavaScript, Python). Очевидно, что динамические типы почти невозможно скомпилировать эффективно. Более того, кучу ошибок невозможно предвидеть заранее и можно выявить только на этапе выполнения или нельзя выявить вообще. Зато интерпретаторы при этом получаются проще, сам писал, знаю непонаслышке. Честно говоря, я не вижу абсолютно никаких преимуществ динамических типов. Обычно к преимуществам относят то, что писать надо меньше, что я бы полагал даже несколько неприличным, поскольку оправдывается собственная лень. Собственно процесс печатания кода - это очень незначительная часть программистской работы.
Есть очень удобный вариант статических типов - автоматические типы, когда тип определен, но явно не написан, а совпадает с типом выражения, которое присваивается. Он был предложен в новой версии стандарта C++, но, похоже, не вошёл. Зато элементы автоматической типизации есть в C# начиная с версии 3.0.
var x = выражение; // Переменная x будет того типа, какой имеет правая часть.
Это удобно для всяких итераторов и элементов коллекций, т.е. когда тип сложен и вторичен, например внутри цикла foreach. Но, тем не менее, это всё равно строгая статическая типизация со всеми её преимуществами.
А "утиная типизация", которая декларируется в Руби, это из поговорки, что если некто крякает как утка, ходит как утка и плавает как утка, то это, наверное, и есть утка. Но это "наверное" и есть слабое место. А вдруг это утконос? Нельзя дать никаких гарантий, а потому надо постоянно и непрерывно проверять тип.
2008-04-29
2008-04-28
Corteo
Subscribe to:
Posts (Atom)




