Переклади

Перемогти посередність

Нарешті в мене дійшли руки перекласти ще одну повчальну статтю Пола Грема про мови програмування, яку я вже згадував у минулому перекладі про “дух міста”. Зазвичай подібні “євангелістичні” речі я сприймаю вельми критично, оскільки я чудово знаю, що срібних куль не існує, але тим не менш думаю, що основна ідея вірна. Читаючи статтю зробіть поправку на те, що вона написана в 2003-му, тобто майже десятиріччя тому і з тих пір дещо змінилося, а Lisp вже не одна така мова-д’Артаньян ;)

Велика подяка Тарасу за виправлення купи помилок :)

Автор оригіналу: Пол Грем (Paul Graham)
Оригінал: Beating the Averages

meditation

Photo by AlicePopkorn

Влітку 1995-го я та мій друг Роберт Морріс запустили стартап під назвою Viaweb. Нашою метою було написати програмне забезпечення, що дозволило б користувачам створювати власні онлайн-магазини. Інновацією на той час було те, що наш софт працював на нашому сервері, а інтерфейсом були звичайні веб-сторінки.

Я впевнений, що у багатьох людей виникла подібна ідея в той час, але наскільки я знаю, Viaweb був першим web-додатком. Це виглядало настільки ново для нас, що ми навіть компанію назвали аби підкреслити це: Viaweb, бо наше програмне забезпечення працювало “через Веб” (англ. “via Web”, – прим. пер.), а не на персональному комп’ютері.

Іншою назвичністю було те, що наш софт було написано здебільшого на мові програмування Lisp. Це був один із найперших великих додатків націлених на кінцевого користувача, написаних на Lisp, який до того часу був прерогативою університетів та дослідницьких лабораторій. [1]

Read the rest of this entry »


Міста та амбіції

Not Hacked

Photo by Matt Olson

Вчора випадково наткнувся на одне цікаве есе відомого у ІТшних колах Пола Грема. Чесно кажучи, я раніше думав, що він пише лише про ІТ та LISP. Одна з найбільш надихаючих його статей на цю тематику – “Перемогти посередність”, а тут був дещо здивованим, що він досить цікаво пише і “за життя”. Звісно, не з усіма пунктами можна погодитись, але джерело для роздумів вельми цікаве.

Цікаво, а про що каже Київ?

Автор оригіналу: Пол Грем (Paul Graham)
Оригінал: Cities and Ambition

Великі міста приваблюють амбітних людей. Ви відчуваєте це, коли гуляєте таким містом. Сотнями тонких натяків місто каже вам: ти здатен на більше, старайся з усіх сил.

Дивує те, наскільки різними будуть ці послання. Нью-Йорк в першу чергу скаже вам: тобі треба заробляти більше грошей. Звісно, цих послань значно більше. Будь модним. Виглядай гарно. Але найголосніше лунають слова про те, що ти маєш бути багатим.

Що мені подобається в Бостоні (чи скоріше Кембріджі) це те, що його послання: будь розумним. Сядь і прочитати всі ті книжки, які тобі треба.

Інколи ти отримуєш дивні відповіді, коли питаєшся про що каже місто. Наприклад, Кремнієва долина насправді каже тобі: стань більш могутнім. Хоча те, що там поважають розум теж правда.

Але це не те саме, про що каже Нью-Йорк. Влада багато чого значить і в Нью-Йорку, але Нью-Йорк буде вражений лише вашим статком, навіть якщо він всього-на-всього дістався вам у спадщину. У Кремнієвій долині нікого не цікавлять ваші гроші, окрім, хіба що, агентів з нерухомості. Що цікавить Кремнієву долину – це міра твого впливу на світ. Причина, чому людей цікавлять Ларрі та Сергій – не їх багатство, а той факт, що вони володіють Google, від якого залежать практично всі.


Read the rest of this entry »


Культурний зсув

Давно щось я “Природних лих” не перекладав, а там час від часу все-таки чудові перли бувають. Сьогодні у мене гарний настрій і пара хвилин вільного часу – виправляюсь :)

Оригінал тут.


Щасливий атеїст (“Природні лиха”)

Ще один переклад “Лих природи”. Тут, правда, я не зміг гарно перекласти сенс. Все-таки прямі переклади слів “unsettling” та “empowering” це трохи не те, про що малося на увазі (на мою думку, звісно).

Calamities of Nature - The Happy Atheist (ukrainian)

оригінал


Свобода (xkcd)

Freedom (xkcd українською)

оригінал

P.S. Хоч комікс трохи не про це, але написане в третій частині коміксу – дуже влучне насправді. Мну в певному сенсі відчув це коли відпочивав у Лисячій бухті, коли за три дні проникся духом свободи настільки, що якби захотів міг вільно стягнути плавки на “цивільному” пляжі біля найближчого до бухти санаторію, який ми проходили по дорозі з ринку. Це відчуття: “от захочу – і зроблю, і пофіг на них всих” насправді одне з найприємніших станів душі, які я колись відчував.


Пристрасні переконання (“Природні лиха”)

Calamities of Nature - Passionate Beliefs (ukrainian)

оригінал


Вебкомікс “Природні лиха”

Нещодавно давно наштовхнувся на сабж: Calamities of Nature, додав до свого списку із xkcd, Geek and Poke та Немі. Судячи по останнім стріпам, місцями досить непоганий. Ось для прикладу:

Calamities of Nature: 325 (українською)

оригінал

Calamities of Nature: 323 (українською)

оригінал

Деякі найбільш цікаві речі, якщо буде не геть вже ліньки, і надалі перекладатиму…


Підключення ресурсів у Visual Studio .NET

Переклад статті Using Resources in Visual Studio .NET від Dejan Jelovic

У Visual Studio .NET здається досить дивна система додавання та управління такими ресурсами як растрові зображення та локалізовані рядки. Воно працює не завжди, воно нелогічне, інструменти управління вельми бідні і, нарешті, воно погано задокументоване.

Цей документ і посібник допоможе привести все до ладу.

Концепція

Ось чому все виходить не так як треба:

У Visual Studio .NET багато ресурсів вже не зберігаються у .RC файлах. Замість цього редактор форм напряму маніпулює вашим VB чи C# кодом коли вам треба щось візуально відредагувати.

Але нам дійсно все ще потрібні інші типи ресурсів. Нам потрібні графічні ресурси такі як растрові зображення та іконки так само як і залежні від локалі рядки. Вони зазвичай зберігаються в одному чи багатьох .RESX файлах, які входять у проект Visual Studio.

Таким чином щоб використовувати ці ресурси у вашому програмному коді вам необхідно знати як:

  • Створити RESX файли.
  • Додавати зображення та інші типи ресурсів до RESX файлу.
  • Завантажити ресурс у вашому коді.

Отож, почнемо…

Створення RESX файлу

Visual Studio .NET зберігає ресурси типу растрових зображень, іконок та локалізованих рядків у файлах з розширенням .RESX. Насправді ці файли є звичайними XML файлами в яких всі бінарні ресурси кодуються в BASE64.

Коли ви компілюєте проект, то компілятор перетворює ці файли в бінарні з розширенням .resource, а потім лінковщик підключає їх у результуючий файл EXE чи DLL.

Додати новий RESX файл в проект елементарно: просто клацніть правою кнопкою миші на проекті в “Solution Explorer”, оберіть “Add/Add New Resource” і додайте новий “Assembly Resource File”.

Додавання ресурсів до RESX файлу

А отут починаються веселощі: у Visual Studio не передбачено ніяких засобів для візуального редагування ресурсів у файлі RESX. На щастя, Лютц Роедер (Lutz Roeder) створив інструмент під назвою Resourcer який можна використовувати для їх редагування.

Щоб додати растрове зображення до RESX файлу:

    Запустіть Resourcer.

  1. Відкрийте у Resourcer’і ті RESX файли які ви додали до проекту Visual Studio.
  2. Виберіть “Add”/”Add File”.
  3. Коли з’явиться ділог, введіть ім’я файлу з растровим зображенням і символічне ім’я під яким його вміст буде збережено у файлі RESX. Після натискання на кнопку “ОК”, вміст файлу буде закодовано у BASE64 і розміщено в RESX під іменем, яке ви обрали.
  4. Збережіть файл RESX вибравши “File”/”Save”.

От і все. До речі, вам більш не треба тримати власне сам файл растрвого зображення, оскільки в RESX файлі зберігається його повноцінна копія.

Використання ресурсів з вашого програмного коду

А ось так треба завантажувати ресурс під час виконання програми:

По-перше, вам потрібно знати під яким іменем Visual Studio помістило цей ресурс у результуючому EXE файлі. Кожен проект Visual Studio має простір імен, який з ним асоційований.

Кожен проект Visual Studio має асоційоване з ним ім’я простору імен (даруйте за тавтологію). Клацнувши двічі на файлі проекту в Solution Explorer, а потім вибравши пункт Properties ви побачите діалог, який дозволить обрати “Простір імен по замовчуванню” (“Default Namespace”). Visual Studio додасть всі ресурси в результуючий EXE-файл під іменем, яке утворюється з імені по замовчуванню та іменем RESX файлу.

Нехай ваш простір імен по замовчуванню називається MyCompany.MyProject, а RESX-файл називається SomeResources. Тоді ці ресурси знаходитимуться у результуючому виконуваному файлі під іменем MyCompany.MyProject.SomeResources.

Щоб отримати доступ до ресурсів з вашого коду вам потрібно буде створити екземпляр ResourceManager:

ResourceManager resourceManager = new ResourceManager
               ("MyCompany.MyProject.SomeResources", GetType ().Assembly);

Потім щоб отримати растрове зображення ви використовуватимете символічне ім’я, яке ви вказали, коли додавали його до файлу RESX використовуючи Resourcer:

Bitmap image = (Bitmap)resourceManager.GetObject ("MyBitmapName");

Якщо ви спробуєте створити менеджер ресурсів використовуючи неправильне ім’я, або ви ввели неправильне ім’я коли викликали ResourceManager.GetObject, то фреймворк викине MissingManifestResourceException.

От і все. Насолоджуйтесь

Додаток

Я щойно отримав листа від Яна Гріффіта (Ian Griffiths). Він пише, що є простіший спосіб зберігати незалежні від локалі ресурси (зазвичай іконки та бітмапки) в проекті. Просто додайте їх до проекту як і будь-який інший файл, а потім виставте їх Build Action в Embedded Resource.

Хоча їх завантаження все одно буде нетривіальним. Нехай ви хочете завантажити растрове зображення. Найпростіший спосіб – це використати конструктор класу Bitmap в формі:

Bitmap (Type type, string resource);

Перший параметр – це тип, що “володіє” ресурсом, а другий – це власне ім’я ресурсу.

А ось тепер починається нетривіальність: завантажувач ресурсів намагається завантажити ресурс з іменем, яке складається з імені простору імен до якого відноситься параметр type та власне імені ресурсу. Таким чином якщо ви всередині методу класу MyCompany.MyProject.MySubProject.MyClass спробуєте завантажити ресурс з іменем MyBitmap.bmp виконавши:

Bitmap bitmap = new Bitmap (GetType (), "MyBitmap.bmp");

То завантажувач ресурсів спробує завантажити його як ресурс з іменем MyCompany.MyProject.MySubProject.MyBitmap.bmp.

Як же зберегти ресурс під таким іменем? Ім’я ресурсу в маніфесті формується з імені простору імен по замовчуванню та імені файлу. Таким чином якщо ваш простір імен по замовчуванню називається MyCompany.MyProject то вам залишається лише назвати файл з бітмапкою MySubProject.MyBitmap.bmp.

Лінк на оригінал: http://jelovic.com/articles/resources_in_visual_studio.htm


Правильне використання просторів імен

Переклад статті Using Namespaces Properly від Dejan Jelovic

Простори імен – дуже потужна особливість мови C++. Ця стаття не вчитиме синтаксису просторів імен, вона просто покаже як їх варто використовувати.

Простори імен лише обгортають всі імена, що в нього входять в якесь інше ім’я. Наприклад:

namespace net {
    class Socket {
        ...
    };
}

...

net::Socket socket;

Завдяки цьому ми впевнюємося, що якщо дві бібліотеки матимуть свої реалізації класу Socket, то якщо вони назвуть свої простори імен по-різному, ваша програма зможе їх використовувати без яких би то не було конфліктів.

Але це викликає ще одне питання: якщо дві незалежні компанії вирішать писати мережеві бібліотеки, то який шанс, що вони будуть робити реалізацію класу з назвою Socket? Я так думаю, що вірогідність цього відсотків 100.

Нам також подобається, коли простори імен легко набираються, що означає, що вони мають бути довжиною в 2-4 символи. З урахуванням цього, який шанс, що обидві компанії назвуть свій простір імен “Net”? 5 відсотків? 10 відсотків?

Як би там не було, це показує, що простори імен не вирішують цю проблему повністю – вони просто зменшують вірогідність її виникнення.

Read the rest of this entry »


CДурнеІм’яКласу

Вирішив на всяк випадок зібрати свої переклади кількарічної давнини на цьому блозі, щоб не загубились якщо що. Нижче – перша ластівка – переклад статті “CStupidClassName” від Dejan Jelovic. За пару годин ще пару перепощу – може комусь стане в нагоді.

Read the rest of this entry »