Pull to refresh
khim @khimread⁠-⁠only

User

Send message

Ещё раз о неопределённом поведении или «почему не стоит забивать гвозди бензопилой»

Reading time8 min
Views38K
Про неопределённое поведение писали не раз. Приводились цитаты из стандартов, объяснения их интерпретации, разного рода поучительные примеры, но, похоже, все люди, пытавшиеся об этом писать пропускали важный пункт: по-моему никто внятно так и не удосужился объяснить — откуда это понятие в языке, собственно, появилось, и, главное, кому оно адресовано.

Хотя на самом-то деле, если вспомнить историю Си, всё достаточно очевидно и, главное, логично. А все жалобы людей, «обжёгшихся» на неопределённом поведении для людей не забывших что такое Си и зачем он вообще существует звучат примерно как: «я тут гвозди бензопилой забивал… забивал и забивал, всё было хорошо, а потом я дёрнул за ручку и у неё коготки как забегают, задёргаются, мне руку оттяпало и полноги… ну кто так строит?».

Люди, которые знают что такое бензопила пытаются, конечно, объяснить, что за если за эту рукоятку дёрнуть, то так, в общем-то, и должно быть, но люди, считающие, что у них у руках такой себе молоток говорят «мимо» них, и, в результате, все остаются при своих.

Так какой же важный секрет люди упускают из виду?
Total votes 83: ↑76 and ↓7+69
Comments206

Что важнее — человеческая жизнь или «интеллектуальная собственность»? «Интеллектуальная собственность», конечно.

Reading time3 min
Views4.3K
Во всяком случае так считают работники Priority Dispatch Corporation.

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

Интересно — как чувствуют себя людоеды типа Roman_Mix читая подобные истории?
Ну да ладно - теперь к делу
Total votes 139: ↑118 and ↓21+97
Comments188

«Ошибки в ДНК» или как неправильный дизайн может приводить к миллионным убыткам

Reading time4 min
Views5K
Написать эту заметку меня побудили очередная статья с «криком души»: ну почему Windows в очередной раз требует перезагрузки при изменении чего-либо (обычно это установка/удаление программ, но бывают и другие случаи)? Почему разработчики Windows-приложений — такие лохи, а разработчики Linux-программ (где таких сообщений при установке «обычных программ» не бывает) — такие молодцы?

Этот феномен всем давно известен — но задумывались ли вы о том откуда у него «ноги растут» и почему в других операционных системах (Linux, MacOS X и т.п.) подобные окна являются чем-то исключительным, а в Windows — постоянным?
Читать дальше →
Total votes 293: ↑256 and ↓37+219
Comments302

Математические парадоксы и ЕГЭ

Reading time1 min
Views5.8K
Не так давно на Хабре была опубликована статья, обсуждавшая вопрос ЕГЭ по программированию. И там была бурная дискуссия на тему адекватности конкретных тестовых вариантов и возможности использования тестирования для оценки знаний вообще.

В связи с этим я вспомнил похожие дискуссии по поводу тестов по математике и связанную с этим забавную задачку.

Вася и Петя где-то добыли арбуз (считаем арбуз идеальным шаром единичного объёма) и разрезали его на 20 частей — возможно неравных. Таня упросила их дать ей одну часть (по её выбору) и Вася согласился взять себе только 9 частей, а оставшиеся отдать Пете. Каков максимальный объём может гарантировать себе Вася при удачном разрезании?
A) не более 0.8; B) не более 0.9; C) не более 1.0; D) более 1.0


Как несложно догадаться «ответ в стиле ЕГЭ» — B. Но правильный-то математический ответ — вовсе даже D! Соответственно вопросы:
1) Является ли человек давший ответ D на ЕГЭ адекватным?
2) Захотите ли вы с ним работать в одной команде?
3) Можете ле вы предложить изменение формулировки, которое бы сделало правильным ответом B — и разумно ли так менять формулировку?

Исправление. Кажется меня не совсем правильно поняли. Я как раз ни в коем разе не требую чтобы школьник умел дать ответ D. Наоборот — я считаю что в этой задаче правильным вариантом считался только B — а если какой-нибудь любитель «выпендрится» в результате пролетит мимо ВУЗа и пойдёт в дворники — то всем будет только лучше. Точно также как в предыдущем случае я считал неразумным принимать ответ 119бит. Шибко умный специалист без знаний о том, когда и куда их применить — «обезъяна с гранатой»… Лично мне в команде такой не нужен и мне интересно — нужен ли он кому-либо ещё…
Total votes 73: ↑43 and ↓30+13
Comments377

К вопросу о языках программирования…

Reading time2 min
Views2.4K
Так как голосование не позволяет оставлять комментарии, то оформлю комментарии отдельной статьёй.

Особо интересует мнение людей, которые считают что у них такого случиться не может (предпоследний пункт в опросе). Почему?

Под катом — законченный пример на одном из распространённых языков программирования.
Читать дальше →
Total votes 25: ↑10 and ↓15-5
Comments128

Альфа версия Flash 10 для x86-64

Reading time1 min
Views581
Adobe развила невиданную активность в деле продвижения своего продукта на разные платформы и вот теперь выпустила 64-битную версию Flash для Linux.

Скачать можно тут.

Небольшой FAQ (на английском) тут.
Total votes 33: ↑31 and ↓2+29
Comments25

Red Hat Enterprise Linux в опасности

Reading time1 min
Views2K
Не знаю — многим ли будет эта информация интересна, но… лучше перебдеть, чем недобдеть.

Несколько серверов RedHat были взломаны на прошлой неделе. В частности был взломан сервер, на котором подписывались пакеты. RedHat немедленно отключила все обновления и, насколько измвестно, «по официальным каналам» никакой заразы никогда не передавалось. И для пользователей Fedora опасности нет — нужно просто обновить систему и всё (старые ключи «на всякий случай» отозваны, выпущены новые). А вот пользователям Red
Hat Enterprise Linux повезло меньше. Те кто пользуются ею легально находятся в том же положении, что и пользователи Fedora. А вот те, кто скачивают пакеты с разных странных сайтов могут получить трояна (обновления для Red Hat Enterprise Linux рассылаются только по подписке, так что если кто-то ставит себе пиратскую копию Red Hat Enterprise Linux, то обновления приходится добывать какими-то окольными путями).

Кто и зачем использует нелицензионный Red Hat Enterprise Linux при наличии CentOS — для меня загадка, но если такие люди всё же есть — проверьтесь (как рекомендует RedHat).
Total votes 10: ↑7 and ↓3+4
Comments3

Полиморфизм, шмолиморфизм…

Reading time6 min
Views15K
Я думаю всем уже окончательно заморочили голову бесконечные статьи про полиморфизм, но меня они достали тоже и я решил… написать свою.

Прежде всего основной принцип (о котором писатели всех предыдущих статей забывают напрочь): KISS. Почему-то для объяснения базовых концепций считается необходимым привлечения двух-трёх языков программирования (обычно неизвестных читателю), парочки двухстраничных примеров и т.п.

Это хороший способ если вы хотите показать свою крутизну на интервью — его иногда даже могут положительно оценить. Хотя я лично вряд ли бы поставил подобному кандидату высокую оценку. Ибо это обозначает просто-напросто что либо человек занимается самолюбованием (не очень хороший вариант), либо он действительно не умеет выражать свои мысли (ещё худший вариент).

Базовые концепции нужно уметь объяснять без привлечения языков программирования вообще! Второй этап — показать как базове концепции используются в том или ином языке программирования. Но это — уже другая история.
Читать дальше →
Total votes 118: ↑84 and ↓34+50
Comments122

МТС начнет продажи Blackberry частным лицам — ЗАЧЕМ?

Reading time1 min
Views2.1K
Собственно давно ожидавшееся объявление.

Кто-нибудь может объяснить: какой в этом смысл? Кто это покупает? Что они с этим делают? Основная «фишка» Blackberry — то, что это канадская компания, которая хранит всю вашу почту «в надёжном месте», до которого дотянуться можно только по решению американского (для Северной Америки) или английского (для Европы) суда, а не по «звонку от дяди Васи». А МТС ввезла меньше 10000 аппаратов и обещалась передавать все давнные ФСБ. Так что уж на эта-то почту однозначно хватит глаз (это ж не десятки миллионов обычных абонентов). Ну и кто этим будет пользоваться? И зачем? Наверное всё-таки люди пользуются (иначе бы расширения охвата не производилось), но кто они?

P.S. У нас на фирме есть немало людей с Blackberry, но они все, разумеется, пользуются западными провайдерами (плюс роуминг) и желания перейти на добровольную отсылку своей почты кому-то у них нет. Так кто же они — эти пользователи Blackberry от Российских провайдеров? Кто-нибудь что-нибудь об этом знает?
Total votes 15: ↑9 and ↓6+3
Comments11

Робин-Гуды и разбойники с большой дороги

Reading time2 min
Views1.2K
В процессе травли erock'а я обнаружил удивительную вещь: многие хабражители не понимают принципов, лежащих в основе авторского права настолько что не могут разобраться в простейшей ситуации.

Например: два приятеля (ну, скажем, Вася и Петя) пошли в магазин и купили там альбом Димы Билана, после чего пошли домой и прослушали его. Но диск дорогой и потому они решили «помочь» своим друзьям и дать им возможность «насладиться шедевром». Вася (крохобор) дал объявление на форуме и продал ну, скажем, 10 экземпляров за 15% стоимости. А Петя (добрая душа) выложил его на том же форуме и его скачали, ну, к примеру 1000 человек.

Кто из них Робин-Гуд, а кто — разбойник с большой дороги?
Читать дальше →
Total votes 57: ↑48 and ↓9+39
Comments230

DNS: Случилось страшное…

Reading time2 min
Views4K
В протоколе DNS была обнаружена практически используемая дыра. Не в каком-то конкретном клиенте, но в самом протоколе. Причём известна-то она была давным-давно, но все «эксперты» сходились на том, что «ну в теории это — может и проблема, но на практике это использовать невозможно». Но не так давно был изобретён способ практического использоваться «cache poisoning» — и это спутало все карты. Похоже, что это — очередное испытание Интернета на прочность: планируется «largest synchronized security update in the history of the Internet», в котором должны будут участвовать десятки вендоров (что не так страшно) и сотни и тысячи ISP (а вот это уже страшнее — многие из них очень халатно относятся к обновлению ПО на серверах).

На настоящее время информации в публичном доступе немного. Есть интервью с человеком, который обнаружил уязвимость, есть сайт на котором вы можете проверить — используется ли ваш компьютер уязвимый DNS или нет (на самом деле, конечно, будет проверен не ваш DNS, а DNS, которым пользуется ваш proxy-сервер).

Также есть некоторая информация о возможных последствиях: злоумышленник может заставить кеширующий DNS-сервер считать что любой сайт в Internet находится где угодно. Какие перспективы для злоупотреблений это открывает мне, я надеюсь, объяснять не нужно (что будет если SMTP-сервер вашего партнёра научат отсылать вашу почту не сразу к вам, а на сайт злумышленника — а оттуда уже к вам?).

Дэн Камински обещал опубликовать подробности на пресс-конференции 6го августа, но предполагается что к тому времени (на основе опубликованных патчей) она будет уже известна многим (и не все эти люди будут носить «белые шляпы»).

Такие дела. Большая часть новостных сайтов трубят о том, что «закрыта фундаментальная уязвимость», но вот первое слово — тут явно по ошибке. Не «закрыта», а «закрывается» и когда она будет «закрыта» окончательно — одному богу ведомо.

P.S. Для тех кто в танке: речь не идёт о теоретических изысканиях в вопросе уязвимости DNS-протокола (про это говорили ещё два года назад). Речь идёт о практическом использовании данной узявимости — причём с вероятностью успеха достаточной для того, чтобы засуетелись крупные фирмы типа Cisco, Microsoft (не говоря уже о Linux-вендорах).

P.P.S. Обнаружил что про это уже писали, но так как то был топик ссылка, то, похоже, никому не захотелось даже прочить статью, на которую вела ссылка. Все дружно отплюсовали комментарии типа «боян», «фигня», «практически это использовать нельзя» и т.п., после чего успокоились. «Боян» это или «фигня» мы точно узнаем только 6 августа, а пока — для меня является достаточным критерием тот факт, что все известные мне системы были срочно обновлены вчера-позавчера. Не «два года назад», не «месяц» назад, а «буквально на днях». Что-то же заставило кучу вендоров это делать? Или они все борются с ветряными мельницами?
Total votes 127: ↑119 and ↓8+111
Comments61

Скринкаст. OOo-Wiki

Reading time1 min
Views1.4K
Забавная идея: использование OOo в качестве инструмента для редактирования Wiki. Преимущества очевидны: богатый набор возможностей (по сравнению со стандартными Wiki), GUI (который так любят люди далёкие от IT), etc. Недостатки — тоже понятны: проблемы с разрешением конфликтов и историей, добавление мелочей (типа указания вместо <username> в примерах прямо имя человека читающего Wiki чтобы можно было без проблем делать copy-and-paste) весьма затруднительно, etc. Но всё равно идея — интересная:

Тут статья, здесь — описание технологии… На английском…
Total votes 23: ↑17 and ↓6+11
Comments6

Происки НЛО?

Reading time1 min
Views761
Недавно разбирался с одной машинкой, на которой Windows Update c трогательной регулярностью пытался поставить ServicePack 1 для .NET 3.0 и с не менее трогательной регулярностью не мог это сделать.

Оказалось что локализация .NET 3.0 не подходит к .NET 3.0SP1 и вместо того, чтобы вменяемо об этом сообщить инсталляция вылетала с сообщением о какой-то внутренней ошибке. Ну ладно, сносим локализацию .NET 3.0, ставим SP1, затем обратно заново локализацию .NET 3.0SP1… вернее не ставим, так как русский язык более не поддерживается! Причём остальные 22 языка поддерживаемые .NET 3.0 поддерживаются… Турецкий, Чешский — пожалуйста, русский — нет. ХабраНЛО залетело за океан?
Total votes 11: ↑2 and ↓9-7
Comments4

Для тех, кто не был в Internet в 1994 году и для тех кто хочет поностальгировать…

Reading time1 min
Views1.5K
По правде сказать я в 1994 году тоже в сети не был, но для ностальгирующих поднят оригинальный сайт Mosaic Communications Corporation (одним из людей, которые создавали Netscape), который позволяет ощутить «как это было тогда». Медленный dial-up (если скорость доходила до килобайта в секунду — это уже было счастье), старые браузеры, всё для вас. Содержимое сайта — также соответсвует 1994му году (почти: CGI-скрипт, который отрабатывал нажатия в разные места картинки отсутствует, так что работают только текстовые ссылки).

P.S. Только отключите proxy те, кто его использует, а то сосед, сходивший туда и скачавший чего-нибудь смажет вам всё впечатление от dialup-Internet'а!

P.P.S. Более побробно о проекте — тут (на английском и без «эффекта dial-up»).
Total votes 27: ↑26 and ↓1+25
Comments30

Ошибочное толкование авторского права.

Reading time21 min
Views4.7K
Я надеялся что кто-нибудь с большим литературным даром нежели мой сподобится перевести фундаментальную статью, в которой объясняется и доказывается (со ссылками) что есть такое на самом деле авторское право и почему оно такое есть. Но прошло несколько лет, никто этого сделать не сподобился и я, в конце концов, решился. Статья переведена нахрапом, в переводе наверняка есть ошибки, если обнаружите — напишите мне в приват, я исправлю.

Эта статья отличается от других тем, что она не начинает с закона об авторском праве (типичный ошибочный подход юристов), а заканчивает им, но не игнорирует его (типичный ошибочный подход «халявщиков» склонных утверждать что единственная цель существования авторского права — это сверхприбыли корпораций и потому авторское право вообще не заслуживает рассмотрения).

Она показывает, что авторское право — вещь, в сущности, нужная и полезная, но сравнивать его нужно не с неотчуждаемыми правами типа права владения имуществом, а скорее с соглашениями о разделе продукции когда общество временно передаёт права на нечто, безусловно принадлежащее ему (в случае с СРП — содержание земных недр, в случае с авторским правом — свободу граждан) в обмен на то, что оно считает полезным для себя (деньги — в случае с СРП, книги/музыку/фильмы/программы/etc — в случае с авторским правом) так как не владеет средствами производства (для добычи ископаемых нужна особая техника, для создания произведений искусства — талант). Основное содержание статьи — объяснение того, «как мы дошли до жизни такой», когда соглашение начинает напоминать историю с пресловутым «школьным порталом» (то есть мы отказываемся от кучи прав на многие десятки лет — а взамен получаем некоторое количество попсы и бульварной литературы в основном).

Итак, статья
Total votes 52: ↑45 and ↓7+38
Comments108

Безумные задачки

Reading time1 min
Views2.9K
После бурной дискуссии у меня возник вопрос: а, действительно, как много людей, знающих (или считающих что они знают) C++ могут ответить на вопрос, подобный «простейшему тесту» из обсуждаемой статьи.

#include <iostream>

int test(int x) {
  static const int y = test(x + 1) * 2;
  return x + y;
}

int main() {
  std::cout << test(42) << std::endl;
  std::cout << test(0) << std::endl;
}

Вопросы:
1. Для какой версии GCC будет работать эта программа?
2. Что она выведет на экран?
3. Как отрефакторить функцию test() чтобы она стала совместима со стандартом (и с GCC 4.2, соответственно)?

Ну и парочка более простых примеров (примерно как задачка номер два там):
4. Как описать внутри класса функцию классу не принадлежающую (то есть не являющуюся ни статическим, ни динамическим методом класса)?
5. Зачем эта возможность нужна в C++?

Ну и напоследок вопрос: а стоит ли задавать подобные вопросы на собеседовании?

P.S. Подсказки пишите белым по белому, как обычно…
Total votes 20: ↑13 and ↓7+6
Comments61

А поощряется ли на Хабре головотяпство?

Reading time2 min
Views590
Истерия по поводу OOXML, похоже, подействовала на ещё одного члена команды. А именно — на maniaque. Что побудило его написать статью с критикой ODF — я не знаю.

Но меня больше всего интересует вопрос: как можно на основании сравнения OpenOffice.org и MS Office 2007 делать вывод о преимуществах и недостатках форматов ODF и OOXML?

Ибо читая статью возникает ощущение, что человек, её написавший на стандарты вообще не глядел — только на офисные пакеты.
Читать дальше →
Total votes 72: ↑57 and ↓15+42
Comments23

Реклама

Reading time1 min
Views1.4K
Знаю что рекламу здесь не любят, но уж больно идея красивая:
.

Правда и в первом и во втором блогах где эта картинка обитает обсуждается в основном сам GMail, а не реклама…

P.S. В третьем ни мыло, ни GMail не обсуждаются, но зато из него видно что это таки произведение Гугла, а не чей-то прикол…
Total votes 85: ↑76 and ↓9+67
Comments80

C/C+: эти коварные наборы строк.

Reading time6 min
Views7.2K
Многие «знают», что программирование на C/C++ позволяет получить программы, которые работают почти так же быстро, как программы, написанные на языке Assembler, а уж те, в свою очередь, быстры настолько, насколько это вообще возможно в теории.

На самом деле, конечно, это не совсем так (а в редких случаях — и совсем не так), но в целом программы на C/C++ действительно быстры, требуют немного памяти и запускаются мгновенно. Если их правильно написать.

Вот о том как правильно писать на C/C++ я и хотел бы немного поговорить. Сегодня я хочу обсудить вопрос о наборах строк. То есть о процедурах, позволяющих из числа получить строку, а из строки — число.

Где подобные списки встречаются? Ну, например, это могут быть списки токенов html, с которыми работает ваша программа. Или список команд, которые принимает ваш командный интерпретатор. Но, конечно, наиболее часто такие наборы возникают как списки всевозможных ошибок: strerror, gai_strerror, regerror и т.д. Думаю каждый программист встречался с подобной задачей хотя бы раз.

Хочу оговориться что дальнейшее описание впрямую применимо только к операционным системам, использующим формат ELF: Linux, MacOS, etc. В Windows или встраиваемых системах ситуация может быть слегка иной. Плюс я в этот раз ограничусь только прямой задачей (по числу получить строку) ибо она во-первых проще, а во-вторых многие решения обратной задачи содержат в себе прямую задачу как часть решения.
Читать дальше →
Total votes 40: ↑36 and ↓4+32
Comments94
1

Information

Rating
Does not participate
Registered
Activity