Pull to refresh
13
0
Дмитрий Муштат @Mushtat

User

Send message

Доказательство некорректности алгоритма сортировки Android, Java и Python

Reading time13 min
Views76K
Тим Петерс разработал гибридный алгоритм сортировки Timsort в 2002 году. Алгоритм представляет собой искусную комбинацию идей сортировки слиянием и сортировки вставками и заточен на эффективную работу с реальными данными. Впервые Timsort был разработан для Python, но затем Джошуа Блох (создатель коллекций Java, именно он, кстати, отметил, что большинство алгоритмов двоичного поиска содержит ошибку) портировал его на Java (методы java.util.Collections.sort и java.util.Arrays.sort). Сегодня Timsort является стандартным алгоритмом сортировки в Android SDK, Oracle JDK и OpenJDK. Учитывая популярность этих платформ, можно сделать вывод, что счёт компьютеров, облачных сервисов и мобильных устройств, использующих Timsort для сортировки, идёт на миллиарды.

Но вернёмся в 2015-й год. После того как мы успешно верифицировали Java-реализации сортировки подсчётом и поразрядной сортировки (J. Autom. Reasoning 53(2), 129-139) нашим инструментом формальной верификации под названием KeY, мы искали новый объект для изучения. Timsort казался подходящей кандидатурой, потому что он довольно сложный и широко используется. К сожалению, мы не смогли доказать его корректность. Причина этого при детальном рассмотрении оказалась проста: в реализации Timsort есть баг. Наши теоретические исследования указали нам, где искать ошибку (любопытно, что ошибка была уже в питоновской реализации). В данной статье рассказывается, как мы этого добились.

Статья с более полным анализом, а также несколько тестовых программ доступны на нашем сайте.
Читать дальше →
Total votes 136: ↑134 and ↓2+132
Comments26

Лёгкий бронекостюм из углеродных нанотрубок

Reading time1 min
Views165K


Канадский производитель одежды Garrison Bespoke разработал мужской костюм, который наверняка понадобится многим бизнесменам и политикам. На первый взгляд костюм не отличается от классического, но сделан из ткани на основе углеродных нанотрубок. Такая ткань останавливает пули до сорок пятого калибра и защищает от колющих ножевых ранений. Она на 50% легче кевлара и в 30 раз прочнее стали.
Читать дальше →
Total votes 98: ↑86 and ↓12+74
Comments144

Нейробиология и искусственный интеллект: часть вторая – интеллект и представление информации в мозгу

Reading time7 min
Views76K
Продолжение.

Начало здесь: Нейробиология и искусственный интеллект: часть первая — ликбез,
и здесь: Нейробиология и искусственный интеллект: часть полуторная – новости от Blue Brain Project.

Теперь, вооружившись новым знанем, можно порассуждать о том, каким образом транспорт ионов через мембраны приводит к интеллекту и сознанию. Правильного, полного и четкого ответа пока никто дать не может, так что будем рассматривать текущую ситуацию на примерах.

Хочу напомнить, что данная серия статей не претендует на детальное описание всех процессов, вовлеченных в когнитивную деятельность мозга, а является описательной, дабы дать интересующимся представление о принципах работы мозга, интеллекта и сознания.

И как же интеллект связан с деятельностью нейронов?





Читать дальше →
Total votes 57: ↑55 and ↓2+53
Comments39

Собеседование: как бы вы сказали «Нет»?

Reading time6 min
Views24K
"… и пусть никто не уйдет обиженным..."
или пусть уходят, зато
"… правду говорить легко и приятно..."



Собственно проблема


Каждый хочет, чтобы все было, как он хочет. Поэтому соискатели и работодатели активно обмениваются, мягко говоря, «советами» на тему проведения процедур найма в надежде хоть чуть-чуть приблизить этот противоречивый мир к гармонии, убедив противоположную сторону подвинуться и изменить в свою пользу правила игры под названием «найм ИТ специалиста».

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

Компания знает, что всегда нужно сообщать причины отказа, иначе «карма компании упадет, а бизнесу будет нанесен непоправимый урон». Сам по себе этот тезис явно спорный, но безусловно, элементарная этика требует поставить все точки над «i» и корректно завершить общение с соискателем. Поэтому будем отвечать всем и всегда.

Формулировать отказы дело не такое уж и простое. Хорошо, если есть четкая объективная причина, в которой «ничего личного — только бизнес». Ну, например:

  • "… к сожалению, мы не можем предложить вам такие условия работы, как вы хотите";
  • "… мы не можем предложить вам N денег";
  • "… в тестовом задании содержатся такие-то ошибки, которые мы считаем принципиальными";
  • "… мы не берем на работу студентов первого курса".

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

Еще хуже, когда очевидно, что озвучивание реальной причины отказа вызовет разочарование и даже обиду претендента. Вот описание ситуаций-задачек, которые основаны на опыте проведения технических собеседований на позиции C++ и .NET разработчиков, а также тестировщиков в компании среднего размера, успешно работающей на рынке аутсорсинга более 10 лет. Все эти ситуации почти реальны, но специально сделано так, что полностью по всем описанным обстоятельствам не проецируются на конкретных людей. Все эти люди интересны, а в перспективе или при изменении каких-то обстоятельств могут быть просто необходимы. Со всеми из них происходило общение, проведены собеседования, они все вполне симпатичные люди. Но прямо сейчас никого из них принять на работу компания не готова.

Попробуйте поставить себя на место работодателя и решить, что в этом случае является меньшим злом: озвучить истинную причину, подсластить отказ выдуманными аргументами или же промолчать?


Читать дальше →
Total votes 65: ↑54 and ↓11+43
Comments58

Чудесное введение в программирование

Reading time6 min
Views40K
Доброго времени суток хабр.

Хотел бы преподнести на суд общественности перевод одной чудесной статьи, в которой описаны базовые принципы программирования. Пару слов о том — зачем собственно это все и кому это надо? Отвечаю — последние несколько месяцев я, сам начинающий программист, активно пытаюсь обучать ребят из других сфер. В этом нелегком труде мне приходится шерстить интернет в поисках в первую очередь интересных материалов, чтобы разбить их стереотипы насчет того что код — это скучно и нудно. К моему глубокому сожалению, таких материалов не так уж много. Я уверен, есть огромное количество новичков, которые регулярно читают хабр и эта статья будет им крайне интересна и полезна.
Читать дальше →
Total votes 72: ↑50 and ↓22+28
Comments46

Как я преодолевал предел 4Гб на Windows XP 32бит

Reading time4 min
Views342K
Сразу оговорюсь, «преодолевал» в названии отражает только тот факт, что теперь моя XP видит всю память, установленную на системной плате. Не я придумал способ, я просто им воспользовался и теперь хочу поделиться.
Вопрос о четырёх гигабайтах памяти в Windows XP (здесь, и далее 32 бит) поднимался на просторах Интернет неоднократно. И так же неоднократно делался вывод, что более четырёх увидеть в принципе невозможно, а так как оборудование тоже требует адресного пространства, то и того меньше. Обычно 3.25 Гб, или около того. Очень подробно и убедительно история вопроса освещена здесь: Четыре гигабайта памяти — недостижимая цель?

Меня этот вопрос тоже волновал. Хотя, казалось бы, можно поставить 64 битную систему, или даже Windows Server (как известно он даже в 32-битной версии видит всю память), но я хотел пользоваться Windows XP. Два раза за последние 3 года я переходил на Windows 7, в первый раз на 64-битную, второй раз на 32-х битную, но в итоге оба раза вернулся назад на XP, которая живёт у меня без переустановки с 2007 года.
Последний раз я отказался от семёрки в пользу старушки буквально две недели назад. Притом, надо отметить, что семёрка была хоть и 32-х битная, но в ней была разблокирована возможность видеть всю доступную память. Способ разблокировки доступен в Интернет. И теперь мне с новой силой захотелось решить этот вопрос и в XP.
Читать дальше →
Total votes 151: ↑122 and ↓29+93
Comments170

Больше отжиманий, меньше больничных дней: социальная сеть HeiaHeia стартует в Великобритании

Reading time3 min
Views49K
imageHeiaHeia это новый проект, который оставался незамеченным за пределами Финляндии, где он был разработан. Однако вскоре это должно измениться в связи с официальным запуском проекта в Великобритании.

Сайт был основан Юсси Райсаненом, соучредителем проекта мобильной почты Smarter (купленного SEVEN Networks), Олли Оксаненом и Иваном Кузнецовым (ранее работавшие на компанию Nokia). Он пользуется большим успехом у себя на родине и количество его пользователей уже насчитывает 5% населения страны (около 175 000). Вероятно своим успехом сайт обязан тому, что стратегия HeiaHeia ориентирована на клиента и B2B (бизнес для бизнеса), т. е. за основу берется то, что работодатель заинтересован в том, чтобы его работники вели более активный образ жизни, что, в свою очередь сокращает количество дорогостоящих больничных.
Читать дальше →
Total votes 41: ↑33 and ↓8+25
Comments32

Простая архитектура сильного искусственного интеллекта

Reading time8 min
Views13K


Все непонятное кажется сложным, запутанным и труднообъяснимым. Такое отношение совершенно понятно и по отношению к сильному ИИ. Наш мозг умеет столько всего, что невольно кажется, что для объяснения принципов его работы необходимо разобраться в сложнейшем хитросплетении множества различных принципов и разнообразных систем. Собственно, это порождает соответствующие подходы к изучению ИИ, которые время от времени описываются на этом сервере. Всякий, кто профессионально занимается ИИ, со временем определяется с неким философским воззрением, которое приобретает для него религиозный оттенок. Пытаться опровергнуть или даже поставить под сомнение это воззрение задача неблагодарная. В конце концов только работающая модель ИИ — веский довод в пользу одной из теорий. Так что прошу воспринимать мое повествование исключительно как мою личною точку зрения. Так вот, я убежден, что уже удалось сформулировать основные принципы необходимые для построения сильного ИИ и в основном понятно, и что есть мышление и как его смоделировать в полном объеме. Подробности под катом.
Читать дальше →
Total votes 44: ↑29 and ↓15+14
Comments157

Установка Hackintosh на примере Packard Bell TM85

Reading time4 min
Views83K
Здравствуй, Хабр. Хочу поделиться своим опытом относительно установки Мака на обычные ПК. Возможно кому-то этот топик будет интересен или полезен.
В этой статье я рассмотрю еще один способ установки Hackintosh на конкретную конфигурацию, без использования различных сборок.
Ставить будем оригинальную Mac OS X 10.7.3 (на момент написания) c загрузочной установочной флешки.
Кстати, данный метод применим и к любому другому IBM PC-совместимому компьютеру.
В итоге Вы получите полностью рабочий Hackintosh.
Читать дальше →
Total votes 68: ↑49 and ↓19+30
Comments41

Механические клавиатуры

Reading time17 min
Views761K
Все мы давно ждем массового появления всевозможных кибер-перчаток и виртуальной реальности на каждом шагу, но все равно каждый день в офисе и дома нам приходится работать за такой банальной вещью, как обычная клавиатура.

А раз уж сталкиваешься с вещью регулярно, постепенно возникает вопрос — можно ли найти для работы какие-то более удобные варианты обычных клавиатур?

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

Механические клавиатуры. Путеводитель.

Читать дальше →
Total votes 323: ↑313 and ↓10+303
Comments331

Показать товар лицом

Reading time14 min
Views5.8K
В этой статье я, на примере редизайна главной страницы cplaza.ru, расскажу об одном из принципов разработки сайтов: «показать товар лицом».

В общих словах этот принцип можно сформулировать так: «Надо сразу дать понять посетителю куда он попал и что интересного здесь можно найти». В случае с интернет-магазином принцип превратится во что-то вроде: «Покажите свой товар и почему нужно купить его у вас». Но несмотря на простоту этого принципа, его часто безосновательно нарушают.

Под катом вы найдёте вредные советы про дизайн сайтов, разбор существующего дизайна главной страницы cplaza.ru, рассказ о том, какие блоки могут оказаться более полезными для этой страницы, а в конце я покажу пример переработанной главной.

Читать дальше →
Total votes 47: ↑37 and ↓10+27
Comments39

Ребенок в семье гика или у нас свой подход

Reading time2 min
Views18K
Когда в семье рождается ребенок, это, черт возьми, здорово! Как говорил Гришковец в фильме «сатисфакция»: «все становится сложно, но в то же время все становится просто». Так вот, о простом: существует огромное количество литературы, рассчитанной на молодых мам. Существует даже пара книжек о детях, написанной для мужчин (причем очень дурным языком). Но почему-то очень мало информации, рассчитанной на технарей. Считается, видимо, что у нас до детей не доходит.

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


Читать дальше →
Total votes 256: ↑211 and ↓45+166
Comments324

Построение структуры содержания сайта на основе семантического ядра (практика SEO)

Reading time3 min
Views4.2K
Эта статья не про плотность ключевых слов и не о том, куда эти ключевые слова прописывать. Напротив, в этой статье я постараюсь описать достаточно простой способ создания грамотной, основанной на статистике структуры содержания. А также влияния такой структуры на посещаемость сайта.

Перед тем как начать нужно определить, что же такое семантическое ядро. Чаще всего под этим понятием подразумевают перечень наиболее популярных поисковых запросов, с учетом которых происходит поисковая оптимизация сайта.
Читать дальше →
Total votes 20: ↑12 and ↓8+4
Comments4

Геймеры в Fold.it решили научную проблему

Reading time2 min
Views8.9K
В мае 2008 года мы обсуждали новую компьютерную игру Fold.it, которую разработали учёные из Вашингтонского университета (США). Программа представляет собой модель сворачивания белков в трёхмерные конструкции. Геймер должен попытаться сделать это наиболее удачным образом, работая с настоящими протеинами. Результаты отправляются в центр обработки, где их проверяют на суперкомпьютере.



За три прошедших года игроки смогли сложить несколько удачных молекул, но их последняя находка не идёт ни в какое сравнение с предыдущими: была обнаружена и подтверждена точная модель фермента протеазы, который играет ключевую роль в заражении организма обезьян ретровирусом ВИЧ. Модель этого белка не удавалось получить в течение уже 15-ти лет. Теперь же можно попробовать создать лекарство, которое воздействует на этот фермент.
Читать дальше →
Total votes 166: ↑156 and ↓10+146
Comments121

URL Rewrite Extension: исправляем распространенные проблемы SEO

Reading time16 min
Views38K
seo toolkit
Поисковая оптимизация (SEO) очень важна для сайтов. Большинство трафика на сайты идет прямиком из поисковых систем, а улучшение поисковой релевантности вашего сайта приведет к увеличению переходов пользователей на сайт. Это может явно или неявно увеличить доход с сайта.

Данная статья расскажет вам, как вы можете использовать URL Rewrite Extension для того, чтобы исправить кучу распространенных проблем в SEO, которые могут быть у вашего сайта. Вам потребуется всего 15 минут и не нужно вносить какие-либо изменения в коде, чтобы применить 4 простых правила URL Rewrite для своего сайта и привлечь больше посетителей и трафика с поисковых систем. Перечисленные ниже приемы работаю одинаково, как на ASP.NET Web Forms, так и на ASP.NET MVC сайтах (и даже не на ASP.NET сайтах)
Читать дальше →
Total votes 75: ↑44 and ↓31+13
Comments32

Самый лучший плохой сервис

Reading time7 min
Views7.2K
image

Хабр не жалобная книга. Но, тем не менее, с заданной периодичностью на нем появляются статьи, где рассказывается о тех или иных проблемах, с которыми сталкиваются хабрапользователи. Сегодня я увидел отзыв о работе с хостингом Драгонара , а ещё раньше отзыв о работе Pay Pal.
И я подумал, почему большинство компаний, которые, по сути, оказывают услуги клиенту, живут за счет клиентов, с таким пренебрежением к ним относятся? Почему в эпоху Интернет, когда 10 недовольных пользователей могут создать колоссальную антирекламу, компании продолжают совершать ошибку за ошибкой и не заботятся о своей репутации? Почему крупные Интернет проекты нанимают высококлассных и высокооплачиваемых разработчиков, но экономят на службе технической поддержки, которая по своей сути и является лицом компании при общении с клиентом?
Читать дальше →
Total votes 184: ↑169 and ↓15+154
Comments154

Опыт составления резюме

Reading time5 min
Views33K

Проблема


Не так давно мне потребовалось обновить своё резюме. Последний раз я это делал несколько лет назад, так что решил написать резюме с нуля.

В этом посте я бы хотел рассказать о своём опыте создания резюме: о предполагаемой целевой аудитории и деталях оформления. Оговорюсь, что я программист, в отделе кадров никогда не работал, так что к соображениям следует относиться со скептицизмом.

Читать дальше →
Total votes 131: ↑107 and ↓24+83
Comments215

Как я проходил собеседование в компанию Zynga

Reading time11 min
Views27K
На Хабре опять стали появляться статьи о том, как проходить собеседования на должность программиста. Материал из них полезен соискателям так же, как учебники полезны студентам во время сессии. Вызубрите том по Мат. Анализу и, если попадете на тот экзамен, получите пятерку.

Гораздо интереснее читать реальные истории людей, которые описывают свой опыт собеседований в ту или иную известную компанию. Что спрашивали, что не спрашивали, какая была атмосфера, сколько проходило интервью? Такие данные много полезнее, чем «а зазубри еще это, авось спросят».

Итак, я хочу рассказать о том, как представители компании Zynga приезжали в Москву в поисках нужных людей. О своем опыте общения с ними, об ошибках и сделанных выводах.

Ну, и картиночка на затравку.


Читать дальше →
Total votes 256: ↑249 and ↓7+242
Comments100

Постраничная верстка rel=«next|prev»

Reading time3 min
Views29K
Наряду с использование атрибута rel=«canonical» для указания поисковому боту на дублирование контента, теперь возможно использовать для HTML ссылок значение rel=“next” и rel=“prev” для обозначения положения текущей страницы в отношении соседних в рамках навигационного блока. В рамках веба встречаются различные варианты использования постраничной навигации — статья, разделенная на несколько страниц, либо категория товаров распределенных по нескольким страницам, либо ветка форума, разделенная на последовательность URL-ов. Теперь, включив rel=“next” и rel=“prev” в верстку страниц, мы можем указать Google:
  • Создать консолидированный индекс страниц, чтобы ссылки не рассеивались между отдельными страницами page-1.html, page-2.html, и так далее
  • При поиске направить пользователя на наиболее релевантную страницу среди всех остальных, например в начало статьи, разбитой на несколько страниц
Подробности и нюансы использования
Total votes 80: ↑77 and ↓3+74
Comments25

Музей видеокарт в Харькове. История создания

Reading time2 min
Views8.4K
От задумки до реализации порой стоят годы. Но сделав первый шаг с искренним интересом в нужном направлении уже сложно остановиться. В настоящее время уже около 200 видеокарт в музее, интервью о проекте в радиоэфире городов Украины, армия интересующихся и помогающий людей, выход музея на российские просторы, … а начиналось все с простой закрытой экспозиции в конце 2010 года.

image
Читать дальше →
Total votes 170: ↑165 and ↓5+160
Comments123
1
23 ...

Information

Rating
Does not participate
Registered
Activity