четверг, 28 апреля 2011 г.

Цитаты разных человеков №4

  • Мужчинам живется гораздо лучше, чем женщинам. Во-первых, они женятся позже; во-вторых, умирают раньше. (с) Генри Луис Менкен 
  • Совет, данный на людях, звучит как упрек. (с) "Кабус-наме"
  • Метеорология: научное обоснование неверных прогнозов. (с) Ален Шеффилд 
  • Подлинный оптимизм покоится не на убеждении, что все будет хорошо, а на убеждении, что не всё будет плохо. (с) Жан Дютур
  • Чтобы оценить чье — либо качество, надо иметь некоторую долю этого качества и в самом себе. (c) Уильям Шекспир
  • Лучший фехтовальщик на свете не должен опасаться второго лучшего фехтовальщика; нет, бояться нужно невежды, который ни разу не держал шпаги в руках; он делает не то, чего от него ожидают, и поэтому знаток перед ним беспомощен. (с) Марк Твен
  • Если у Вас и седьмой блин получился комом... к черту блины! Пеките комочки!
  • Чтобы иметь то, что никогда не имел, надо делать то, чего никогда не делал.

воскресенье, 24 апреля 2011 г.

Quite Interesting №2

Эпиграммы о Программировании +
3. Синтаксический сахар вызывает рак точек с запятой.
51. Появление компьютеров в домах не изменит ни то, ни другое, но может возродить бар на углу.

Популярные вопросы на собеседовании по C++ и ответы на них +

Широкий символ (wchar_t) и тут, и (wstring) +
   

Тьюринговая трясина +
++++++++++[>++++++++++>+++++++++++>++++++++++++>+++++<<<<-]>.>+.<--.>+++.---.++++.----.>--.<<+++.>++++.+.------.>+++.>----.<<<++++-------.>--.+++.<+++++.>+.-.++++.+.>>.<<<----.>-----.--.

(=<`:9876Z4321UT.-Q+*)M'&%$H"!~}|Bzy?=|{z]KwZY44Eq0/{mlk**hKs_dG5[m_BA{?-Y;;Vb'rR5431M}/.zHGwEDCBA@98\6543W10/.R,+O<

Функция debug.traceback(), которая вернёт вам call stack в Lua. +
Браузер можно использовать для проверки синтаксиса xml документа.
В opera:

суббота, 16 апреля 2011 г.

Алан Тьюринг

Отличная статья про него, которая сама по себе является статьей по материалам другой статьи.

Алан Тьюринг (23.06.1912 -7.06.1954) - британец, работавший в Блетчли-Парк (дада, вы определённо знаете, где это), крутой мужик, математик, логик, криптограф иии основоположник информатики!

Давным-давно в тридевятом царстве в тридесятом государстве один мальчик пошёл в школу получать знания. В школе этот мальчик не проявлял никакого интереса к изучению Закона Божия, литературы и латыни. Он испытывал тягу к техническим наукам и в пятнадцать лет самостоятельно разобрался в теории относительности. Дирекция школы терпела долго, но однажды все-таки направила матери этого мальчика записку следующего содержания: «Ваш сын, видимо, хочет быть только научным специалистом. Может быть, математиком — такие ученики, как он, рождаются раз в 200 лет. Но что он вообще забыл в нашей школе?».

Чуть позже.
В 1936 году построил логическую модель своей знаменитой машины Тьюринга. Предложенная им абстрактная вычислительная "Машина Тьюринга" позволила формализовать понятие алгоритма и до сих пор используется во множестве теоретических и практических исследований.
В 1940 году Алан совместно с другом и коллегой Г.Уэлчманом сконструировал шифровальную машину "Бомба", которая расшифровывала сообщения нацистской шифровальной машины "Энигма" сразу после их перехвата. Затем сделал ещё более тыщи различных ЭВМ (Колосс, ACE, MADAM). Работы Алана по сооружению первых ЭВМ и развитию методов программирования имели неоценимую важность, дав основу большинства исследований в области искусственного интеллекта. Aaaight!

Тест Тьюринга - эмпирический тест, идея которого была предложена Аланом Тьюрингом в статье «Вычислительные машины и разум», опубликованной в 1950 году в философском журнале «Mind». Стандартное звучание закона: «Если компьютер может работать так, что человек не в состоянии определить, с кем он общается — с другим человеком или с машиной, - считается, что он прошел тест Тьюринга». Таки Suzette обманула одного. А в те годы крутыми были ELIZA и известный шизофреник PARRY.


Яблоко, от которого умер Тьюринг, было отравлено цианидом. За два года до смерти Тьюринг был осуждён за гомосексуализм, который был в то время запрещён в Великобритании. Чтобы избежать тюремного заключения, он согласился на годичные инъекции эстрогена, призванные подавить его сексуальные влечения. Как осуждённый, Тьюринг лишился допуска к секретным работам и возможности участия в дешифровальной контрразведывательной деятельности. Он покончил с собой в возрасте всего 41 года. Тем не менее, его мать считала, что он отравился случайно, так как всегда небрежно работал с химикатами. 
В 2009 году Премьер-министр Великобритании Гордон Браун публично принёс извинения за те методы, которым был подвергнут Алан Тьюринг.


Является кавалером Ордена Британской империи.
Премия Тьюринга является самой престижной премией в информатике.

понедельник, 11 апреля 2011 г.


Настоящие инновации невозможны без ... УСИЛИЯ. Чтобы заставить себя общаться с теми, кто способен утянуть вас в направлении, которое существенно отличается от вашей обычной дороги.
Крайним примером такого подхода был Эрнандо Кортес. Как гласит история, Кортес высадился на берег со своим отрядом в Веракрузе, Мексика. Оттуда они отправились в глубь материка. Они столкнулись с болезнями, невыносимыми условиями жизни и решительными врагами. Из опасения, что солдаты могут потерять решимость двигаться дальше, Кортес прибег к грубому и изумительно простому решению: СЖЕЧЬ КОРАБЛИ. (с) Том Питерс. Представьте себе! 

воскресенье, 10 апреля 2011 г.

Закон Мёрфи и эффект гремлина

Закон Мерфи
Если какая-нибудь неприятность может произойти, она случиться.
Следствия:
  1. Все не так легко, как кажется.
  2. Всякая работа требует больше времени, чем вы думаете.
  3. Из всех неприятностей произойдет именно та, ущерб от которой больше.
  4. Если четыре причины возможных неприятностей заранее устранимы, то всегда найдется пятая.
  5. Предоставленные самим себе события имеют тенденцию развиваться от плохого к худшему.
  6. Как только вы принимаетесь делать какую-то работу, находится другая, которую надо сделать еще раньше.
  7. Всякое решение плодит новые проблемы.
Эффект гремлина
Ситуация, когда теоретически исправная техника загадочным образом выходит из строя. В этом случае причину неисправности объясняют проделками мифического существа гремлина. Фраза произошла в результате упоминания гремлинов в связи с поломками самолётов британской авиации в 1940-х годах.

суббота, 9 апреля 2011 г.

Цитаты разных человеков №3

  • Мы живем в обществе, существование которого зависит от наук и технологий, но в котором с трудом можно найти людей хоть что-то понимающих в этих областях. (с) Carl Sagan
  • Годы потраченные на создание Искусственного Интеллекта любого заставят поверить в Бога. (с) Alan J. Perlis
  • Бурение земли в поисках нефти? Вы имеете в виду, что надо сверлить землю для того, чтобы найти нефть? Вы сошли с ума. (с) (ответ на проект Edwin L. Drake в 1859г)
  • Наши друзья с севера потратили более 5 миллиардов долларов на R&D и, похоже, собрались скопировать Google и Apple. (с) Стив Джобс. 2006, про Microsoft
  • Мы никогда не сделаем 32-разрядную операционную систему. (с) Билл Гейтс
  • Меня зовут Линус Торвальдс и я ваш бог. (с) Линус Торвальдс. 1998
  • Говори правду, и тогда не придется ничего запоминать. (с) Марк Твен

Немного о локализации Mac приложений

(Xcode 3)
Процесс локализации приложений в Mac OS легок и прост, когда знаешь, что делать. Исполняемый файл программы отделен от локализованных ресурсов (текстов, изображений, звуков), сгруппированных по отдельным папкам. Локализованные ресурсы хранятся в отдельной .lproj директории для каждого поддерживаемого языка. Папки .lproj названы согласно спецификациям ISO. Содержимое всех таких папок должно быть одинаковым.

В региональных настройках Mac OS вы указываете свой основной язык и список дополнительных языков. В случае, если приложение не поддерживает ваш основной язык, то будет использоваться язык из указанного списка. Если ни для одного из указанных языков не было найдено файлов перевода, то приложение будет использовать язык, указанный по умолчанию при разработке программы. Это значение указывается в переменной “Localization native development region” (эквивалент в xml-варианте - CFBundleDevelopmentRegion) в файле Info.plist.

Пример структуры локализованного приложения (Mac, iPhone, iPad..)


Calculator.app/                      сборка (bundle)
    Contents/
        MacOS/
            Calculator               исполняемый файл
        Info.plist
        Resources/                   папка с ресурсами
            Calculator.icns
            tapeButton.tif           не локализованные ресурсы
            English.lproj/           папка с ресурсами, локализованными для англоязычной аудитории
                Localizable.strings  динамически отображаемые строки
                Calculator.nib       интерфейс приложения
                CalculatorHelp/      файлы документации и помощи
            ru.lproj/                папка с ресурсами, локализованными для русскоязычной аудитории
                Localizable.strings
                Calculator.nib       
                CalculatorHelp/ ...
XCode берет на себя работу по созданию lproj директорий. При нажатии правой кнопкой на Info.strings выбираем Get Info, далее нажимаем Add Localization и пишем, например, для русского язык - ru (всё по ISO).
Важный момент. Локализацию English удалять не стоит, иначе другие локализации перестанут добавляться. English и en одно и то же. Получаем:

Теперь у нас в раскрывающемся списке InfoPlist.strings будет English и ru. 
Значения всех ключей (CFBundleName, CFBundleDisplayName и т.д.). Добавим в ru пару ключей:

* If you localize this key(CFBundleDisplayName), you should also include a localized version of the CFBundleName key.
Затем для нашего примера добавим в ..info.plist, если отсутствуют, следующие ключи (нажав Add Row) со значением ${PRODUCT_NAME}:

Чтобы увидеть результат проделанной работы необходимо изменить язык системы и перезапустить Finder, сделать это можно с помощью выхода из системы (Log Out).
В Finder'е:
И там сверху:

Если умеете читать по-английски(при этом понимая, что вы читаете), вам сюда.

Escape-последовательность в C++

Символьная константа состоит из символа, заключенного в одиночные кавычки (апострофы), как, например, 'х'. Значением символьной константы является численное значение символа в машинном наборе символов (алфавите). Символьные константы считаются данными типа int.
Некоторые неграфические символы, одиночная кавычка ' и обратная косая \, могут быть представлены в соответствие со следующей таблицей escape-последовательностей:
 символ новой строки              NL(LF)        \n
 горизонтальная табуляция         NT            \t
 вертикальная табуляция           VT            \v
 возврат на шаг                   BS            \b
 возврат каретки                  CR            \r
 перевод формата                  FF            \f
 обратная косая                   \             \\
 одиночная кавычка (апостроф)     '             \'
 набор битов                      0ddd          \ddd
 набор битов                      0xddd         \xddd
Escape-последовательность \ddd состоит из обратной косой, за которой следуют 1, 2 или 3 восьмеричных цифры, задающие значение требуемого символа. Специальным случаем такой конструкции является \0 (не следует ни одной цифры), задающая пустой символ NULL. Escape-последовательность \xddd состоит из обратной косой, за которой следуют 1, 2 или 3 шестнадцатеричных цифры, задающие значение требуемого символа. Если следующий за обратной косой символ не является одним из перечисленных, то обратная косая игнорируется. (с)

среда, 6 апреля 2011 г.

Запуск приложения с аргументами в XCode

Если у вас непреодолимое желание, чтобы ваше приложение запускалось с аргументами, например, с аргументом "--kill_them_all", то вам следует сделать это:
Project->Edit Active Executable "..."
В окне настройки выбрать Arguments и добавить нужный аргумент.

воскресенье, 3 апреля 2011 г.

Lua, lua, lua

Исключением в довольно свободном синтаксисе Lua является правило, по которому нельзя переходить на новую строку непосредственно перед символом '(' в вызове функции. Это ограничение позволяет избежать некоторой двусмысленности в языке. Если вы напишите

a = f
(g).x(a)


Lua трактует эту запись как выражение a = f(g).x(a). Поэтому, если вам нужно 2 выражения, вы должны добавить точку с запятой между ними. Если вы действительно хотите вызвать f, вам необходимо убрать переход на новую строку перед (g).


Lua приятный и чистый язык. (c) 
:)

Цитаты разных человеков №2

  • [Плохое] имя метода сродни предвыборным обещаниям политиков. Вроде о чем-то оно говорит, но если задуматься – непонятно о чем @ С. Макконнелл
  • Очень часто люди не знают чего хотят, пока ты не покажешь им это @ Стив Джобс
  • Perl – The only language that looks the same before and after RSA encryption. @ Keith Bostic
  • Всегда выбирайте самый трудный путь — там вы не встретите конкурентов @ Шарль де Голль
  • Руководить – это значит не мешать хорошим людям работат @ Петр Капица
  • При достаточном количестве глаз все ошибки лежат на поверхности @ Линус Торвальдс
  • Две вещи, изменившие миp, были созданы в Беpкли: LSD и Unix. Вряд ли это случайное совпадение @ Jeremy S. Anderson
  • Простота – необходимое условие прекрасного @ Лев Николаевич Толстой
  • Лучше промолчать и показаться дураком, чем раскрыть рот и развеять все сомнения @ Марк Твен

суббота, 2 апреля 2011 г.

Quite Interesting №1

Эзотерические языки программирования +


Хакерская ценность +
Google Scribe, который напишет за тебя книгу +

"Вдохновляющие логотипы со смыслом" +

Смешной язык программирования INTERCAL +
В INTERCAL есть 5 операторов — 2 бинарных и 3 унарных. Впрочем, в некотором смысле все операторы бинарны, поскольку все они оперируют с двоичным представлением аргументов, но эта игра слов уводит нас в сторону от изложения.
Quine в программировании
Компьютерная программа, которая выдаёт на выходе точную копию своего исходного текста.

Препроцессор в XCode

Позволит вам избежать добавления, например, "#define ya bog" в тысячи исходных файлов.
В настройках таргета:
А также:
"If you have multiple targets or projects that use the same prefix file, use Preprocessor Macros Not Used In Precompiled Headers instead, so differences in your macro definition don't trigger an unnecessary extra set of precompiled headers." (c)