• Паттерны проектирования, взгляд iOS разработчика. Часть 0. Синглтон-Одиночка
    0

    Попытаюсь перефразировать. Инженер как и любой другой человек подвержен заблуждениям и предрассудокам из-за которых сложно трезво оценивать технологии. Если мы всю жизнь использовали goto, то нам сложно признать что это было ошибкой. Такой эффект известен в психологии как эскалация обязательств [1].


    Вопрос в том, как замечать такое поведение и избегать его. Хороший подход — смотреть за авторами технологий и гигантами индустрии. Если изобртатель технологии смог перешагнуть через свою гордость и признать ошибку, то вероятно что-то дейсвительно с ней не так. Ссылки выше были как раз про это. Tony Hoare придумал null ссылки, Erich Gamma и Ralph Johnson — синглтоны.


    Я согласен, что каждому инструменту — свое назначение, просто назначение некоторых инструментов — отправиться на свалку истории :)


    Забавно что вы упоминули спутники, вот тут [2] пишут что там как раз используют наработки сэра Tony Hoare и наисвежайшие идеи, такие как TLA+. В общем, не держитесь за то, что уже доказало свою несостоятельность.


    [1] https://en.wikipedia.org/wiki/Escalation_of_commitment
    [2] http://www.altreonic.com/content/main-mission-rosettas-philae-lander-accomplished

  • Паттерны проектирования, взгляд iOS разработчика. Часть 0. Синглтон-Одиночка
    –3

    Да ладно, идите объясните Дейкстре, что goto это нормально [1] и он просто не умеет его готовить, потом расскажите сэру Tony Hoare что null ссылки это ок [2], ну а под конец поведайте Erich Gamma и Ralph Johnson, что они заблуждаются называя синглтон своей ошибкой [3][4].


    Время показало, что некоторые идеи, которые на первый взгляд кажутся нормальными, на самом деле вредны. Давайте уже перестанем их защищать, особенно, когда даже их авторы это уже признали.


    [1] http://homepages.cwi.nl/~storm/teaching/reader/Dijkstra68.pdf
    [2] https://www.infoq.com/presentations/Null-References-The-Billion-Dollar-Mistake-Tony-Hoare
    [3] http://www.informit.com/articles/article.aspx?p=1404056
    [4] https://twitter.com/daverooneyca/status/529799186795884544

  • Реплицируемый объект. Часть 1: Введение
    0

    Я написал пару постов про Paxos и про измемение размера кластера. Если кратко, то я объединил подход Vertical Paxos (разные кворумы на чтение и на запись) с joint consensus Raft'а:



    До TLA+ руки еще не дошли, но я попрактиковался в ручном теоремодоказательстве и привел его в статьях, упомянутых выше. Буду рад вопросам :)

  • Распределенный криптопроцессинг
    +1
    Как ведет себя система при split brain и падениях отдельных узлов?
  • Как я работал в Индии веб-разработчиком по контракту
    +1
    В Индии в основном договорные браки, так что девушка с детства может знать, за кого она выйдет.
  • Как я работал в Индии веб-разработчиком по контракту
    +2
    Это сложно описать, но в Индии чувствуется многообразие, полнота и черезмерность жизни. Это касается как природы, так и традиций, культуры, еды. В Таиланде с природой все хорошо, но культурное многообразие не такое большое. Индия же воспринимается, как сама жизнь, колыбель цивилизации, по сравнению с ней, все остальные страны, где я был, — воспринимаются немного мертвыми. Например, Финляндия воспринимается вообще как страна, которая пережила нашествие зомби.
  • Apple перестала хранить криптоключи пользователей на своём сервере
    0
    Шифровать данные — законно, правительство (США) не может потребовать их расшифровать, так как это противоречит 5ой поправке.
  • Utopia заменит Silk Road?
    +2
    Прежде, чем писать, стоит задуматься, каково должно быть это единое мнение и может ли оно быть вообще? Единственная наука, где старые теории не пересматриваются это математика, что было верно 100 лет назад — верно и сейчас, а так же будет верно всегда. В остальном же, в любой момент могут появится новые данные; поэтому вынести окончательное мнение по чему-то невозможно.

    Например, мультивитамины — annals.org/article.aspx?articleid=1789253 — до последнего времени считались полезны.

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

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

    P.S. Я не укурок, а logic nazi. Конопля полезна, медики это признали, но из этого совсем не следует, что нужно её использовать в рекреационных целях.
  • Utopia заменит Silk Road?
    +7
    Это не так. Здесь — www.cancer.gov/cancertopics/pdq/cam/cannabis/healthprofessional/page5 — можно найти ссылки на медицинские статьи, в которых описывается применение различных каннабиноидов как дополнение к лечению рака. Эти каннабиноиды используются для:
    • снятия беспокойства
    • устронения тошноты
    • стимуляции аппетита
    • обезболивания

    Помимо этого, рядом — www.cancer.gov/cancertopics/pdq/cam/cannabis/healthprofessional/page4 — описывается, что каннабиноиды сами по себе имеют противоопухолевое действие.

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

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

    Поэтому не надо говорить, что медики про пользу ничего не говорят.

    P.S. Я против употребления конопли там, где это противоречит законодательству
  • JohnSmith — простой и легковесный JavaScript-фреймворк для построения UI
    +1
    Спасибо за упоминание (я про Warp9), с момента статьи на хабре я немного изменил внутренности (переключился на явный граф зависимостей) это позволило избежать проблем, характерных для многих реактивных библиотек. Например, с помощью Knockout легко:


    Так как у вас система основана на идеях, близких knockout проверьте эти сценарии на своей библиотеке, возможно и у вас есть, что исправить :)
  • Warp9 — еще одна реактивная js библиотека. На этот раз компонуемая и без утечек
    +1
    Со спуском данных в компоненты (state) проблем нет, но если мы нашу иерархическую фигню, не только показываем и редактируем, но и сохраняем, то тут нужно писать дополнительный код в компонентах для экстракции данных из state.

    Получается, что в небольших приложениях мы можем держать всю модель в state одного компонента (случай TodoMVC), а в больших — придется его распиливать и доставать. В этом нет ничего плохого, просто кода станет еще больше, а так React классный.
  • Warp9 — еще одна реактивная js библиотека. На этот раз компонуемая и без утечек
    +1
    Я, кажется, в презентации это упоминал — у реактивный переменных, полученных иначе, чем через вызов конструктора, нет методов set/unset (если это Cell) и add/remove (если это List).
  • Warp9 — еще одна реактивная js библиотека. На этот раз компонуемая и без утечек
    +4
    О, тогда Warp9 действительно похож на Javelin+Hoplon. Правда сложность инструментария меня убивает — нужно поставить Java, Clojure, Leiningen, Make, Boot, Hoplon, Javelin и выучить clojure чтобы написать hello world. Как-то уже не хочется проверять его на текучесть, но, подозреваю, что он тоже течет.
  • Warp9 — еще одна реактивная js библиотека. На этот раз компонуемая и без утечек
    +1
    По поводу AngularJS. Нет, ну нельзя сказать, что мы используем templateUrl и проблем нет. Потому что в этом случае мы не имеем права говорить:
    Вы можете взять готовую директиву и подключить к своему шаблону (дизайну), т.е. сможете использовать готовые решения.
    Разница между подключением одного файла (js) и двух файлов (js и шаблон) огромна. В первом случае мы можем говорить про удобную дистрибьюцию, например, AMD, во втором нет — все делаем вручную. Кроме того, во втором случае перед нами открывается целый класс новых ошибок: что если один файл потеряется, что если файл шаблона я положу не туда куда нужно и так далее…
  • Warp9 — еще одна реактивная js библиотека. На этот раз компонуемая и без утечек
    +1
    По поводу стилизации, да можно, но пока, к сожалению, можно добавить только один класс элементу. Это не фундаментальный недостаток, просто руки не дошли пока — большую часть разработки я боролся с утечками и несогласованностью событий. Пример с input-text можно переписать так:

    ["input-text", {
        "class": hello.isSet().when(false, "empty")
    }, name]
  • Warp9 — еще одна реактивная js библиотека. На этот раз компонуемая и без утечек
    +1
    Проблема в том, что при росте приложения держать все состояние и логику работы с ней в одном компоненте проблематично.
  • Warp9 — еще одна реактивная js библиотека. На этот раз компонуемая и без утечек
    +2
    Вы, ваще-то, пробовали его запускать? Там нету чекбоксов, нету информации, сколько осталось задач, нету табов 'All', 'Active', 'Completed', нету удаления всех завершенных задач, нету редактирования и, подозреваю, что нету работы с local storage…
  • Warp9 — еще одна реактивная js библиотека. На этот раз компонуемая и без утечек
    +2
    Мне кажется, что эти два преимущества друг другу противоречат: при разработке директив активно смешиваются код и разметка, а если так, то где разделение труда?

    Кроме того, в сложном приложении трудно разделить логику и шаблон, особенно, когда интерфейс активно меняется из логики, а если так, то зачем создавать себе дополнительные сложности, может есть другой путь?
  • Warp9 — еще одна реактивная js библиотека. На этот раз компонуемая и без утечек
    +1
    Не совсем. Я, скорее, думал про случаи, когда логика приложения сложнее, чем интерфейс. Возьмем, допустим gmail, врят ли при его разработке отталкивались от верстальщика. Вообщем, это библиотека для приложений посложнее CRUD.

    Я, например, создал приложение для конфигурации топологии MongoDB кластера с помощью этой библиотеки, а там куча всяких правил, типа в одной шарде должно быть от 2 до 12 нод, только 7 могут голосовать, лучше намекать пользователю, когда он вручную назначает свойства canVote при числе нод меньше 7ми и так далее.
  • Warp9 — еще одна реактивная js библиотека. На этот раз компонуемая и без утечек
    +1
    В смысле, странный? Я считаю то, что течет — подписки у переменной driver, если я начну считать что-то другое (кол-во элементов в списке), то memory leak от этого никуда не денется.
  • Warp9 — еще одна реактивная js библиотека. На этот раз компонуемая и без утечек
    +1
    Да, React очень интересный, но мне он показался очень подробным, что-ли, например, в todomvc на нем в 3 раза (!) больше кода, чем в Warp9.

    Кроме того, у идея работать с POJSO есть свои минусы — если мы захотим по рабочему приложению получить слепок данных, чтобы их сохранить, например, — нам понадобится в каждый компонент добавить метод для экстракции этих данных из state. Посмотрите на исходники TodoMVC, там, чтобы этого избежать, пришлось все изменения делать внутри одного компонента (TodoApp), что тоже дурно попахивает, если мы говорим об архитектуре.
  • Warp9 — еще одна реактивная js библиотека. На этот раз компонуемая и без утечек
    +2
    Парсер хабра, постарался пофиксить.
  • Warp9 — еще одна реактивная js библиотека. На этот раз компонуемая и без утечек
    +1
    Я посмотрел на Javelin (https://github.com/tailrecursion/javelin). На первый взгляд он, так же как и RxJs и Bacon, не предоставляет ничего для постройки интерфейсов, только только дает возможность подцепиться к уже существующим элементам.

    Примеры на github.com/tailrecursion/javelin-demos тоже все в стиле: вот у нас DOM и мы к нему цепляемся и изменяем. По мне нет смысла городить FRP если конечным шагом является подписка на реактивную переменную и модификация DOM с помощью jquery из обработчика.

    Посмотрите на warp9 повнимательнее тут вся соль в композиции (собираем интерфейс по кусочкам) и модульности (любой кусок, вплоть до всего приложения включая view можно завернуть в AMD и загружать через requirejs). Дополнительным бонусом идет подход для сокращения утечек — посмотрите примеры, например, knockout и reactivecoffee этим страдают.
  • (Архив) Matreshka.js — Введение
    0
    А где ссылка на TodoMVC?
  • Задержан владелец Silk Road, изъяты 3,6 миллиона долларов
    0
    не там ответил:) habrahabr.ru/post/196164/#comment_6810844
  • Задержан владелец Silk Road, изъяты 3,6 миллиона долларов
    0
    Если сравнивать с уличным героином — да. Чистый героин, как и большинство опиоидов, не вызывает серьезных осложнений при длительном применении, кроме зависимости.

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

    Конечно, всегда есть исключения, но не стоит на них надеяться, а то можно закончить как www.reddit.com/user/SpontaneousH/submitted
  • Компилятор языка программирования MiniJava
    +3
    Пару лет назад, когда занимался .Net и созданием парсеров обнаружил, что удобнее Nemerle.Peg ничего нет. Советую посмотреть на него.
  • YAMD: еще один велосипед для описания модулей в JS
    0
    Спасибо за критику, это очень круто, особенно за #6 — классическая ошибка при метапрограммировании)

    Если модуль большой, то невозможно найти те модули, которые использует данный модуль

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

    PS Вашу статью читал, она великолепна и всеобъемлюща, подробно описывает модули с технической точки зрения, но почему то после её прочтения у меня не сложилось понимания как нужно проектировать библиотеки используя современный модульный подход в JS. Именно поэтому мне и пришла в голову идея yamd — попытаться сделать систему похожей на java/c# (насколько это возможно), чтобы переиспользовать свой опыт этих языков.
  • YAMD: еще один велосипед для описания модулей в JS
    0
    Завел тикет — github.com/rystsov/yamd/issues/1
  • Comment from a drafted post.
  • False sharing в многопоточном приложении на Java
    +2
    Если не ошибаюсь, в java 8 появится sun.misc.Contended аннотация, которую можно будет вешать на класс или его поле/поля, чтобы избежать False sharing'а.

    mail.openjdk.java.net/pipermail/hotspot-dev/2012-November/007309.html
  • В этом году на дорогах Великобритании появятся роботизированные автомобили
    +1
    Мне кажется, что при тотальном автопилоте кол-во машин резко снизится так, как пока человек работает 8 часов в офисе «его» машиной могут пользоваться другие люди, кроме того одна машина может отвозить привозить несколько людей, которые живут и работают рядом. Получает гибрид из общественного транспорта и личного водителя, а город станет местом для жизни)
  • В этом году на дорогах Великобритании появятся роботизированные автомобили
    +1
    25 лет назад Буран слетал в космос и сел на автоматике, а тут какие-то автомобили. Вспоминаем закон мура и думаем как техника ускорилась с тех пор, так же вспоминаем про то, что по сравнению с компом реакция человека ничтожна. Кстати, в России 28K смертей в год в дтп (это 1.5% от всех смертей).
  • Техника написания аналога await/async из C# для C++
    0
    Я не c++ разработчик, и сильно спотыкаюсь при чтении кода в статье, поэтому лучше спрошу, чем буду пытаться самостоятельно.

    У вас в примере все async_code функции ничего не возвращают, это случайность или ограничение данного подхода?
  • Особенности русской разработки
    +3
    Не понимаю, зачем использовать эфвемизмы, особенно такие очевидные и явно выделенные. Смысл в них, какой? Тем б*ле_ _итатb так*й т3кст *чень _еприятно, @ _начит эт* явное неуважение к читателю.
  • Хранилище фотографий Topface теперь open source
    0
    Мы давно записали фотографию и затем только читаем. В системе периодически вылетают диски — мы их заменяем новыми, но перебалансировки не происходит. Со временем все диски будут заменены, а так как перебалансировки не было — наша фотография хранилась только на старых дисках, следовательно, мы её потеряем.

    Я что-то не так понял?
  • Хранилище фотографий Topface теперь open source
    0
    Верно, что со временем (без перебалансировки) все старые фотографии будут недоступны? Если да, то интересно, почему вы решили, что она не нужна.
  • Релиз Java 8 передвинут на март 2014 года
    0
    Вы не тот вопрос задаете.

    Если java-программист хочет использовать замыкание (изменение локальной переменной из лямбды), то java сообщество не бьёт его палкой, а рекомендует использовать костыль в виде int[] или AtomicInteger. Возникает вопрос, почему это окостылевание не делает компилятор, если оно и так общепринято? Ответ я не знаю.
  • Релиз Java 8 передвинут на март 2014 года
    +2
    Это не трюк, а костыль. Когда я в первый раз увидел подобный код (там использовался AtomicInteger), я включил повышенный внутренний уровень опасности, ожидая хитрой работы с потоками, оказалось зря — это был как раз этот «трюк»: использование вещей для этого не предназначенных, чтобы обойти искуственное ограничение. По-моему, сложность для людей очевидна.
  • Релиз Java 8 передвинут на март 2014 года
    0
    Замыкания и лямбды можно реализовать на уровне синтаксиса без добавления новых инструкций в байткод и изменения виртуальной машины. Доказательство: C#, Scala.