• Язык программирования моей мечты
    +1
    Что вы хотели?

    Чтобы выгоды от использования языка перекрывали его недостатки.

    Какие конкретно плюсы вашего языка перекрывают минусы в виде низкой скорости выполнения, закрытого исходного кода и сложности печати (постоянно переключать раскладку) и чтения (постоянно переключать мозг)?
  • Про удивительность пчелы, и то, как мы её убиваем
    +2
    Только не тигры, а гепарды. Вот это исследование, кстати, предполагает, что через бутылочное горлышко они прошли аж дважды – 100 000 и 12 000 лет назад, причем в последнем, по некоторым данным, вообще выжила всего одна пара особей.

    А еще похожие события случались у шарпеев (спасибо коммунистам) и у новозеландских мухоловок (спасибо котикам).
  • Предиктивное поведение веб-интерфейса
    +1
    Предиктивно доставлять содержимое корзины курьером до подъезда, а в случае, если он не закажет – разворачиваться и уезжать?
  • Данные более 100 млн аккаунтов «Вконтакте» продаются в сети за 1 биткоин
    +2
    Может быть это ранее угнанные аккаунты, каждому из которых поменяли пароль на этот?
  • Алгоритм Метромарафона. Как аналитик Яндекса просчитал, что все станции можно посетить за один день
    +4

    Не уложится. Даже если предположить, что все 200 станций соединены в одну длинную ветку, поезда ждать не надо, а все перегоны занимают 3 минуты – только на перегоны придется потратить 9 часов 57 минут, то есть половину от всего отведенного времени.
    Следовательно, даже в этом случае на каждой из станций останется всего 3 минуты 0.9 секунд на то, чтобы:


    • выйти из вагона
    • дойти до эскалатора (причем, не получится просто всегда ездить, скажем, в первом вагоне: на некоторых станциях выход будет только из последнего)
    • подняться на эскалаторе (причем, вероятнее всего, не пешком: я лично не представляю, какая нужна физическая подготовка, чтобы за день бодрым шагом подняться по всем эскалаторам)
    • выйти
    • сфотографировать
    • зайти
    • спуститься по эскалатору
    • сесть в поезд

    За три минуты это можно успеть сделать разве что на станциях мелкого заложения (а их всего 107, то есть чуть больше половины), и то, придется побегать.
    Подобное можно было бы попробовать провернуть за два или три дня, но это уже не так красиво звучит.

  • Да вы задолбали своим информационным обществом
    +1
    Да, здесь неувязочка. Более того — кастрюля любого размера будет именно стоять. А если ее перевернуть — будет лежать.
    Другой похожий пример — какой-нибудь низкий, но широкий и длинный чайный столик: он тоже стоит, а если его перевернуть — он будет лежать.

    Может быть, это относится ко второму пункту из моего комментария, который, следовательно, относится не только к предметам, которые могут передвигаться, но и вообще к предметам, которые могут быть как-то использованы?
  • Да вы задолбали своим информационным обществом
    +2
    С бокалом и ложкой не так уж и сложно, по идее: вообразим некий ограничивающий параллелепипед вокруг предмета (не знаю, как по-другому перевести понятие «bounding box»), и если предмет покоится на той его стороне, которая меньше других по площади — он стоит, а если на той, которая больше других — он лежит.

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

    Как-то так, видимо.
  • Большинству землеподобных планет еще только предстоит родиться
    +1
    Кстати говоря, в этом же, возможно, и причина того, о чем говорится в статье: сейчас во вселенной доминируют водород и гелий, вследствие чего гораздо более распространенными должны быть газовые гиганты типа Юпитера или Сатурна. Но со временем более тяжелых элементов должно становиться больше, следовательно и число землеподобных планет будет расти.
  • Если робот убьет человека, кто будет виновен?
    0
    пусть лучше машины сражаются на поле боя

    А как быть, когда у одной из сторон машин не останется, но признавать поражение она не захочет? Машинам другой стороны, в таком случае, придется убивать (и делать инвалидами, как морально, так и физически) тех, кого дома ждет семья.
  • Компьютерная игра «Битва за Донецк»
    +16
    Вообще, выиграть можно. Достаточно не нанимать войска и не использовать бомбардировку и ящик с аптечкой в течение минуты.

    Вот как выглядит сообщение о выигрыше
    image
  • Skylines: новая игра вместо умершего SimCity
    0
    На данный момент нет, но у игры есть ModdingAPI и, возможно, оно позволяет (или позволит в будущем) это реализовать.
  • Skylines: новая игра вместо умершего SimCity
    +2
    На третьем скриншоте крайний правый ряд из легковушек — это и есть припаркованные машины.
  • Идеи для HTML6 или HTML.next
    0
    Фактически это не сильно отличается от SPA, в котором весь сайт (по крайней мере статика) загружается одной страницей (запросом) и переключение между «страницами» происходит через JS и HistoryAPI.
  • Идеи для HTML6 или HTML.next
    0
    либо указывать путь в виде «httр://example.com/mobile/familyreunion.zip/html/activities.html»

    Тут имеет смысл думать и об обратной совместимости: все-таки это не какой-нибудь border-radius, без которого вполне можно прожить. Такая ссылка, конечно, может работать, но только при условии, что веб-сервер настроен соответствующим образом.

    Может быть имеет смысл добавить атрибут тегу <a> и в нем напрямую указывать, из какого именно архива мы хотим получить страницу? Например:
    <decompress href="/mobile/archive.zip">
    ...
    <a href="/path/to/some/page.html" zip-src="/mobile/archive.zip">Click!</a>
    

    Таким образом получится сохранить возможность обратиться к page.html старым способом (что может быть также полезно в том случае, если архив по каким-то причинам недоступен), а в случае поддержки браузером данной спецификации просто получить страницу по тому же пути, но уже внутри архива.

    PS. Теоретически, при таком подходе можно вообще избавиться от тега <decompress> и загружать архив тогда, когда браузер встречает этот zip-src (разумеется, если этот архив не загружен ранее).

    PPS. По большому счету, все это можно упростить еще больше до указания где-нибудь в <head> ссылки на архив с сайтом: если браузер находит запрашиваемую с данного домена страницу в zip-архиве, то он использует ее, если нет — обращается непосредственно к веб-серверу (скажем, если страница динамическая).
  • Идеи для HTML6 или HTML.next
    0
    deleted
  • Как у меня внезапно прорезался интерес к текстам
    +2
    1) Нужен цепляющий заголовок и картинка до ката.

    Еще желательно, чтобы картинка до ката была не в два экрана высотой. :)
  • Спидометр для скейта. Безысходность
    +2
    Вообще говоря, при такой скорости (ни много ни мало 87.5 Махов при температуре в 20°C) человек должен просто испариться от трения о воздух.

    Но если предположить, что этого не произойдет, то с первой же кочки он вместе со своим чудо-скейтбордом выйдет на гелиоцентрическую орбиту (а то и вовсе покинет солнечную систему, если будет покидать планету в направлении ее движения), поскольку эта скорость почти в три раза выше второй космической.
  • Сколько может стоить один лишний пробел?
    +5
    Исключительно моя догадка: может быть для удобства смены порядка слов в предложении при наборе текста?
    Взять, выделить слово и тут же перетащить его в другое место, не разбираясь с дополнительной расстановкой пробелов.

    Я сейчас хотел было поставить false, но тут вдруг понял, что переставлять слова в предложении станет гораздо сложнее.

    (Предвкушая очевидный вопрос, отвечу: да, лично я действительно достаточно часто этим пользуюсь)
  • На взрыволёте к Юпитеру
    0
    Собрать, я думаю, можно и на НОО (если это будет выгоднее), после чего поднять орбиту обычными способами до «безопасной» высоты и оттуда уже стартовать, отделив этот обычный разгонный блок и уведя его на орбиту захоронения.
    Впрочем, как уже сказали выше, для слабых зарядов даже этого не потребуется.
  • Что не так с редизайном Хабрахабра
    +2
    Не только на этих: с другими постами у меня тоже такое было. Я писал в саппорт, сказали, что это старый баг, проявляющийся достаточно стихийно.
    Да и кроме того, схожая проблема лично у меня была и до редизайна.
  • Что не так с редизайном Хабрахабра
    0
    del
  • Что не так с редизайном Хабрахабра
    +1
    Меню («гамбургер») -> Посты -> Лучшее за сутки/неделю/месяц/все время.
  • Что не так с редизайном Хабрахабра
    +6
    Так после скролла наверх эта же кнопка меняет иконку на «Вниз» и функционирует как «ну пожалуйста, верните меня обратно в середину страницы». Разве нет?
  • На Энцеладе найден потенциально обитаемый подлёдный океан
    +2
    Это чтобы добраться до Земли. Он мог писать сюда, используя радиоволны. С другой стороны, им тоже требуется минимум 1 час 15 минут в один конец, так что он точно не с Энцелада.
  • Комментарий из публикации, перенесённой в черновики.
  • Комментарий из публикации, перенесённой в черновики.
  • Комментарий из публикации, перенесённой в черновики.
  • Комментарий из публикации, перенесённой в черновики.
  • Новый интерфейс Яндекс.Метро и технологии, с помощью которых он работает
    +1
    Кстати, да. При открытии вкладки фоном (например, через клик средней кнопкой мыши или Ctrl+кликом) в последнем Firefox карта банально не загружается. Хотя в Chrome, например, такого бага нет.
  • Незакрываемая вкладка в Chrome
    0
    Открывает вместо домашней и ведет себя как ни в чем не бывало.
  • Незакрываемая вкладка в Chrome
    0
    Интересный эффект наблюдается, если открыть эту вкладку, как единственную, при условии, что в настройках установлено восстанавливать вкладки, которые были открыты при закрытии браузера (либо если этот сайт установлен домашней страницей). Браузер закрывается сразу после запуска и, если в случае с восстановлением последних закрытых вкладок достаточно успеть нажать Ctrl+T, то при установке домашней страницей без правки конфигов или файла hosts не обойтись.
    Проверено в Firefox 22.0 и в Google Chrome.
  • Автоматический «текучий интерфейс» и ArrayIterator в PHP-моделях
    0
    Хм, да, похоже я ошибся.
  • Автоматический «текучий интерфейс» и ArrayIterator в PHP-моделях
    –3
    По MVC в модели должны быть только данные, а вся логика должна быть в контроллерах.
  • Автоматический «текучий интерфейс» и ArrayIterator в PHP-моделях
    0
    Да, я скорее имел в виду контроллер. К сожалению, путаюсь в терминологии.
    В данном случае, как я уже сказал, менять не нужно вообще ничего при условии, что названия свойств остаются теми же. В этой статье я лишь немного коснулся темы адаптеров, но вообще они позволяют легко и просто переключаться между работой с разнообразными хранилищами, будь то база данных, реляционная или нет, файлы, что угодно. Главное, чтобы оттуда можно было прочитать данные, туда можно было записать данные и оттуда можно было удалить данные.
  • Автоматический «текучий интерфейс» и ArrayIterator в PHP-моделях
    0
    Вопрос, как мне кажется, только в том, какая часть логики хранится в модели и хранится ли вообще. Если чутко чувствовать и соблюдать эту грань, то даже при наличии определенного количества логики в моделях, можно избежать и сложноподдерживаемого кода и трудноуловимых ошибок. При этом, это в определенной мере позволит избавиться от дублирования кода в случае с разного рода валидацией данных.

    При смене одной ORM на другую в любом случае придется переделывать бизнес-логику, либо нужно делать доступ к данным «точно такой же, как в %ORM-name%». Если вы имеете в виду, к примеру, переход с MySQL на PostgreSQL, то на этот случай предусмотрены адаптеры подключения к БД и переход в данном случае проходит вполне безболезненно, заменяя лишь класс, от которого наследуется модель.
  • Автоматический «текучий интерфейс» и ArrayIterator в PHP-моделях
    0
    Кодогенерация — это один из выходов. Другой выход — это как раз использование магии. Оба подхода имеют свои плюсы и минусы. Плюс магического, в частности, в том, что не нет строгого набора данных.

    Вот пример: есть, допустим, стороннее API и есть модель, которая с ним работает. API обновилось, добавилось новое свойство. Его можно использовать сразу же, не редактируя модель. Это полезно, когда разработкой фреймворка занимается один человек, а написанием бизнес-логики — другой.
  • Автоматический «текучий интерфейс» и ArrayIterator в PHP-моделях
    0
    Никто не спорит, что использование __call медленнее, а дополнительные системы вроде ORM тоже дают определенную нагрузку. Но на другой чаше весов скорость написания кода, удобство его поддержки и чисто субъективная понятность. Грубо говоря, можно все это написать на ассемблере, и это будет определенно быстрее обычных вызовов.

    Хороший программист должен думать обо всем, но не все являются хорошими программистами. Зачастую лучше предоставить вот такую «автоматическую коробку передач», которая позволяет добраться из точки А в точку Б не требуя от программиста погружаться в дебри реализации. лично мне спокойнее на душе, когда я знаю, что мой коллега ничего не забудет, потому что я это уже предусмотрел в самой модели. Но я, разумеется, понимаю, что это нарушение заповеди «не храни логику в модели» :)
  • Автоматический «текучий интерфейс» и ArrayIterator в PHP-моделях
    0
    Если честно, не совсем понял логику. Вы имеете в виду, что должен быть некий централизованный объект, который умеет сохранять любую запись в базу? А если мне при сохранении именно товаров нужно сделать еще что-то, в лог запись добавить, например?
  • Автоматический «текучий интерфейс» и ArrayIterator в PHP-моделях
    0
    По поводу усложнения чтения кода я не соглашусь, потому что, на мой взгляд, куча проверок перед изменением записи (если использовать запись «сырых» данных, используя, например, $instance->price = 12.95) нисколько не облегчает чтение кода, и, кроме того, зачастую приводит к его дублированию. А если использовать генерируемые методы, то внешне (в логике приложения) это не будет отличаться от данного подхода ничем, кроме этих самых двух регулярок, которые, при наличии дополнительной логики при установке значения, не используются.

    Этот механизм не претендует на то, чтобы заткнуть за пояс известные ORM. Это просто иллюстрация еще одного подхода, который, на мой взгляд ии по моему опыту, достаточно удобен в использовании.
  • Автоматический «текучий интерфейс» и ArrayIterator в PHP-моделях
    0
    Спасибо за развернутый комментарий.

    Да, определенные проблемы с производительностью могут иметь место. По большому счету, для этого есть прямой set() без регулярок. Если нужна дополнительная логика, то можно переопределить тот же метод setDescription() в самой модели, вызывая в конце set('description', $value) или parent::setDescription(). Но в целом, да, вы правы, здесь производительность жертвуется в угоду удобочитабельности и наглядности.

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