• Сопротивляйтесь добавлению в проект новых библиотек
    0
    Проблемы начинаются когда вы используете библеотеку А и Б, потом нужно добавить библиотеку С, но внезапно она тоже использует библеотеку Б, только другой версии (скажем, старой). Придется собирать библиотеку С самому, добавлять ее в свой собственный Maven репозиторий. Когда придет время обновить библиотеки (например security issue где-то исправили или нужна новая функциональность или performance improvements, много может быть разных причин) то внезапно задача будет не тривиальной. Иногда даже код библиотеки С приходится править, т.к. в библиотеке Б сменился API.
    Чем больше у вас Java библиотек в проекте, тем больше вероятность таких проблем.
  • Релиз mongodb 3.2 немного подробностей
    +1
    Но вообще, похоже что вам важны только последние 3 месяца. В таком случае предлагаю писать каждый месяц в отдельную database внутри MongoDB. Потом удалять скопом DB целиком, будет очень быстро. Application layer нужно будет немного изменить, чтобы он делал 3 запроса (последние 3 месяца).
  • Релиз mongodb 3.2 немного подробностей
    0
    Теперь, с WiredTiger, «у него виртуальной памяти на 100Gb (не помню точно, но не мало)» — такого не будет. Потому что нет больше memory mapped files, которые раздували размер виртуальной памяти. Что касается файлов на диске — предлагаю попробовать и посмотреть. Потому что за это тоже отвечает WiredTiger и он работает совсем по-другому, не как MongoDB раньше.
  • Релиз mongodb 3.2 немного подробностей
    +1
    нет, все гораздо лучше, т.к. теперь за это отвечает WiredTiger, нет больше никаких memory mapped files.
    мы используем (и ненавидим) MongoDB в продакшене с самых первых версий, когда пришла пора искать подходящее хранилище со следующими параметрами: поиск только по ключу, random access (по настоящему random, никаких там working set fits in memory), размер данных много больше свободной памяти; написали по сути 4 data layer под наши данные: MongoDB, Cassandra, Riak, Aerospike. Залили живые данные. MongoDB тогда как раз вышла версия с optional WiredTiger, решили попробовать чтобы был так сказать baseline, ожидания были что MongoDB покажет себя хуже всех. В итоге MongoDB показала себя лучше всех. Riak был просто супер медленный, Aerospike был чуть быстрее MongoDB (совсем совсем чуть-чуть) но ел гораздо больше памяти, Cassandra по записи была хороша, но постоянный compaction весь read performance убивал совсем. Как то так. Эксперименты проводили на серверах, которые в итоге и использовались в production — AWS, 15G RAM (M3 General Purpose Extra Large), EBS optimized, EBS volume с базой 400 GiB, Volume Type gp2, IOPS 1200 / 3000
  • Чистая архитектура в Go-приложении. Часть 1
    +1
    О! Помню эту статью, я автору огромный комментарий написал от всей души, а он мне ответил на него через несколько месяцев одной строчкой, которая противоречит его же постулатам из статьи. Если кто-нибудь категорически разделяет и понимает позицию автора, буду благодарен ответу на свои вопросы из оригинального комментария. Его легко найти внизу от оригинальной статьи, способа сделать ссылку на комментарий к сожалению не нашёл.
  • Как я стажировался в стартапе в Сан-Франциско и уехал домой
    0
    Может быть, но у меня с Nexus 5 никаких проблем, у жены с iPhone 5 тоже
  • Как я стажировался в стартапе в Сан-Франциско и уехал домой
    +1
    спасибо, не знал про такой контракт, сами мы с женой пользуемся T-Mobile, тем самым «секретным» prepaid за $30, может и имеет смысл перейти на Verizon, особенно если ещё у них телефон в lease взять
  • Как я стажировался в стартапе в Сан-Франциско и уехал домой
    0
    у T-Mobile тоже LTE сеть, Verizon безусловно лучше всех, но он же ожидаемо дороже всех
  • Почему вы никогда не должны использовать MongoDB
    0
    MySQL у них у всех как движок, данные скорее всего денормализованы и по 10 таблиц там для построения стены никто не джойнит, а таблицы шардят между несколькими серверами. YouTube тоже использует MySQL: github.com/youtube/vitess. Тоже не в третьей нормальной форме естественно. Twitter использует разные хранилища исторически (MySQL, Cassandra и другие), но переходят на свою разработку Manhattan blog.twitter.com/2014/manhattan-our-real-time-multi-tenant-distributed-database-for-twitter-scale.

    Каждой задаче свой инструмент, бросаться использовать Cassanda или Manhattan для системы инвенторизации закупок, где у MySQL запас по производительности будет x100 даже без оптимизаций — смысла нет. Но когда на хабре плюсуют комментарии в духе «NoSQL придумали люди, не осилившие SQL» — это странно.
  • Почему вы никогда не должны использовать MongoDB
    0
    А что делать когда БД перестает умещаться на один самый большой сервер который вы можете себе позволить? Расскажите в Facebook или Twitter что их данные можно хранить в 3ей нормальной форме и спокойно делать джойны для чего угодно, только оптимизировать надо. А то они дураки там в твиттере какой-то манхеттен разрабатывают, наверно в универе их не научили уму-разуму.
  • Какой язык программирования больше всего любят в Яндексе? И всегда ли любовь взаимна
    +1
    тем не менее в Яндексе используют Go :)
  • [Перевод] Почему Go не так хорош
    +2
    Я не эксперт, но был на нескольких митапах по Go в San Francisco и задавал вопрос по generic'ам. Мой вольный пересказ: generics — это конструкция, которая повлияет на все другие аспекты языка — структуры, функции, методы, интерфейсы, каналы, пакеты — на все. На данный момент в языке все эти конструкции — ортогональны. Таким образом ввод generics сильно усложнит язык — как реализацию, так и использование. Также generics сами по себе — сложная вещь, есть подходить основательно (variance, type constraints). Разработчики Go не хотят вводить generics «чтобы было». Они пока не нашли решения, как можно ввести generics в go, чтобы это не навредило языку. Может и не найдут, но от generics окончательно и бесповоротно они не отказываются пока.
  • Крик опыта неудач
    0
    Это несущественная проблема. С точки зрения магазина, убытки от таких «недобросовестных» покупателей гораздо ниже стоимости внедрения и поддержки системы с отпечатками пальцев. И это еще если не учитывать отпугивающий фактор сканеров отпечатков пальцев.
    Эту проблему проще решить возможностью копить баллы помимо скидки. Мало кто захочет копить баллы для чужой карточки, когда свою можно завести пряма здесь и сейчас и начать копить баллы для себя.
    И вообще, мы чью проблему решаем? Если проблему клиента (много карточек — неудобно), то тогда номер телефона вполне решает проблему. Если проблему магазина (несколко человек могут использовать скидку) — то это другая проблема. Сканер отпечатков пальцев в таком случае — неплохое решение, видел как оно используется в тренажерном зале. В этой сфере — крупные сетевые тренажерные залы, бассейны и т.п. данная система может быть востребована, т.к. у них есть реальная проблема — они не хотят чтобы по цене абонемента на одного человека ходили 3 по очереди. Но у этой системы есть серьезный конкурент — карточка с фотографией.
  • Крик опыта неудач
    0
    Как люди иногда все усложняют. Проблема десятка дисконтных карточек решается очень просто. Вместе с карточкой клиенту предлагается ввести уникальный 10-ти значный знакомый ему номер, который он может всегда использовать вместо карточки. При оформлении карточки сотрудник магазина как бы невзначай говорит «чаще всего люди используют номер своего телефона».
  • Зачем нам нужен Rust?
    0
    Если ориентироваться на Freelance биржи, то есть только PHP и немножко Java :) Причем PHP популярнее Java в 4 раза
  • Зачем нам нужен Rust?
    0
    ну вот абсолютно без контекта можно понять что происходит
    Комментарии
    // VarRefs() - это функция, определенная для ссылки на запрос (*Query) и возвращает массив ссылок ([]*VarRef)
    func (q *Query) VarRefs() []*VarRef {
        // если массив q.refs еще не вычислялся
        if q.refs == nil {
        	// присваеваем пустой массив
            q.refs = []*VarRef{}
            // для каждого statement s из массива q.statements
            for _, s := range q.statements {
                // добавляем сссылки из s.VarRefs() в массив q.refs
                q.refs = append(q.refs, s.VarRefs()...)
            }
        }
        return q.refs
    }
    


    понятное дело что нужно знать синтаксис языка, но синтаксис Go простой, его изучить можно за 2 часа, и он очень близок к C
  • Зачем нам нужен Rust?
    +1
    nullable нужен там где он нужен, где значение может быть нулевым, для этого есть en.wikipedia.org/wiki/Option_type
    для каждого типа данных его лепить не нужно, также как не нужны магические значения -1 и т.п.
  • Зачем нам нужен Rust?
    +3
    Для меня Rust и Go в разных лигах. Go хорош там, где раньше я бы воспользовался С или C++, для написания небольших утилит, но которые должны быстро выполняться, для веб-сервисов, БД и так далее. В общем на Go я бы с удовольствием писал такие проекты как Redis, MongoDB, или утилиты как scp, grep. Go это простой язык, в том плане что синтаксис очень простой, чтобы понимать код, не нужно знать контект. Go — императивный язык, shared memory model.
    Rust же — это именно попытка скрестить C++ и Haskel. Это функциональный язык в первую очередь, вместо shared memory тут новая модель, где компилятор знает кто владеет памятью и контролирует доступ. Это очень очень интересная идея, надеюсь у них все получится. На Rust мне было бы интересно писать бизнес-логику, или machine learning системы.
    Также Go — это уже взрослый язык, на горизонте версия 1.3, язык стабильный, в том плане что гарантирована компиляция ваших программ для всех 1.х версий языка. Go используют в продакшене давно и успешно. Есть куча библиотек для всего на свете и т.п.
    Rust пока не достиг этого состояния. Это не плохо, это дает ему преимущество, потому что он все еще может кардинально улучшаться. Но для продакшена его использовать еще страшно. Mozilla например недавно представила Heka github.com/mozilla-services/heka — написан на Go, Rust они рассматривали в качестве кандидата, но отказались именно по причине его нестабильности (т.е. бурного развития)
  • Google купила производителя термостатов за 3.2$ млрд
    +2
    Google купил не только компанию-производитель крутых термостатов для умного дома, но и Тони Феделла, и еще не известно, что сыграло большую роль. Цена сделки космическая. Сомневаюсь что Тони Феделл останется у руля Nest больше чем на год, скорее в будущем он возглавит более крупное подразделение Google. Интересно как все обернется, ведь в свое время он обещал с Apple не конкурировать.
  • Электромобиль Tesla S сломал оборудование для проведения краш-тестов
    +2
    Дисклеймер: праковаться в неположенных местах — хамство. Но аналогии они такие аналогии. Вы привыкли что около дома есть мусорные баки, из которых регулярно вывозят мусор. А теперь представьте что завтра все изменится. Рядом с вашим домом построят еще 4 многоэтажки, но контенеров для мусора не прибавится. А потом из 8ми контейнеров останется 3. Итог — когда вы с утра идете выкидывать мусор — баки переполнены и уже навалено рядом (хамами). Вы идете пару кварталов, чтобы выкинуть куда положено. Везде баки переполнены. И вот вы гуляете с мусором по окрестностям, уже 1.5 часа, вы же культурный человек. Вы опоздали на работу, ваш ребенок дома ждет когда же наконец его отведут в детский сад, но вы упорно продолжаете искать свободную мусорку.
    И кого вы будете винить в сложившейся ситуации? Конечно тех, кто выкидывает много мусора. Конечно не тех, кто не подумал поставить больше контейнеров. В конце концов, нужно производить меньше мусора, и не забивать контейнеры своим, как последний хам.
  • .NET dynamic, Unity и ошибка в RuntimeBinder
    0
    То, что подобные ошибки теперь ловятся на этапе сборки проекта — это замечательно. Но как вы решили проблему? Не используете dynamic?
    И кстати вы используете Property injection и Method injection? Гуру же рекомендуют использовать constructor injection :)
    Если не используете, можно наверно отключить две эти стратегии в Unity и проблема должна уйти.
  • Базы данных в онлайн-играх. От Аллодов Онлайн до Skyforge
    +2
    Логи покупок и прочих игровых действий мы храним в специальной большой базе/системе для гейм мастеров. Но про неё много очень писать надо, потом, может быть статья будет.

    Очень хочется такую статью.
  • DarkJPEG: cтеганография для всех
    +2
    А чем обусловлен выбор SHA-3 для Key Derivation? Насколько я знаю, стандартным выходом в такой ситуации (вводимые пользователем пароли, которые будут подбираться по словарю) является использование hash-функции N раз, чтобы вычислять ее было долго. Ну т.е. мне, как пользователю, не жалко подождать 1 лишнюю секунуду, пока программа генерит мне зашифрованную моим паролем картинку, а вот потенциальному взломщику это проблем прибавит. При этом SHA-3, на сколько я понимаю, на данный момент не имеет никаких преимуществ перед SHA-2. SHA-3 считается дольше чем SHA-2 при програмной реализации, но в аппаратной реализации SHA-3 быстрее чем SHA-2.
    В общем я рекомендую сменить SHA-3 на ru.wikipedia.org/wiki/PBKDF2 + SHA-256, параметр «количество раундов» подобрать по вкусу, ну чтобы хоть секунду тормозило :)
    PBKDF2 специально создан для того, что Вам нужно — получить ключ из пароля, введенного пользователем. А в шифровании всегда лучше использовать стандарты.
  • VLC вернулся в App Store
    0
    ну тогда не видать нам поддержки smb, если только они не решат нарушать, как делают многие
  • VLC вернулся в App Store
    0
    у библиотеки с реализацией smb лицензия вроде бы GPL, я вот не понимаю, при таком «дуализме» можно использовать любые GPL библиотеки (линковка статическая) или нет?
  • Про Linux — для любознательных Windows-пользователей
    0
    Я не знаю, может я параноик, но скачанному бинарнику с оффициально сайта я больше доверяю, чем пакету из стороннего репозитория Василия Пупкина. Да и вроде не так уж тяжело обновлять — вышла новая версия — скачал архив, распаковал, перенастроил симлинк, если все ОК — удаляешь старую папку. В случае исходников добавляется еще пункт «скомпилировал».
    Раз это не так уж страшно, то продолжу так делать, мне так удобнее.
    Я еще благодаря этому топику прочитал статью — как самому собирать .deb пакет (была ссылка выше). Желание возиться с этим отпало.
  • Про Linux — для любознательных Windows-пользователей
    0
    Все пишут что нельзя устанавливать приложения руками, только из репозитория. Непременно упоминая несчастных котят.
    Я не понимаю, есть люди которые действительно только из репозитория и устанавливают?
    Мне вот для работы нужно Java JDK (Oracle) чтобы нормально работала IntelliJ IDEA, также git, sbt, redis, mongodb, storm, zookeeper, kafka, python 2 и python 3, golang. Их либо нет в родном репозитории либо версия старая, а реально нужна более свежая. В итоге я просто создал себе в домашней папке подпапку programs и там у меня все нужные програмы, скачанные с сайта производителя в бинарном виде, либо скомпилированные из исходников (без make install). В другой подпапке (bin) лежат симлинки на нужные бинарники. Папка bin в path. Скажите много котят пострадало? И как предполагается правильно устанавливать в моем случае?
  • PhoneJS — Новый HTML5-фреймворк для мобильных приложений
    0
    Я правильно понимаю, что WinPhone 7 не поддерживается?
    habrastorage.org/storage2/d9a/370/d52/d9a370d522bdfcd58e4a963b65418470.jpg
  • Три-пятнадцать
    +1
    Так то оно так, но пока под WINE работает больше софта, чем под ReactOS, насколько я понимаю. Mono тоже работает под Linux лучше чем в ReactOS. Работа ребят интересна сама по себе, они получают полезный опыт и т.п. Но до практического применения вряд ли дойдет когда-нибудь.
  • История создания Diablo
    +1
    Неправильно вы в конец положили тему Тристрама — я сначала прочитал статью, потом включил музыку. И прочитал еще раз в итоге, слушая и ностальгируя :)
  • Как мы перешли с 30 серверов на 2: Go
    0
    В Go нет наследования, и это хорошо :)
    В Go есть duck-typing при статической типизации — и это просто волшебно.
    «инкапсуляция, наследование, полиморфизм» (tm) :)
    Инкапсуляция есть, наследования нет, полиморфизм есть
    еще есть интерфейсы, duck-typing и расширение структур
    вполне себе ООП, просто не Java
  • Как мы перешли с 30 серверов на 2: Go
    +2
    Я конечно понимаю что целью было максимальное передергивание и гипербола, но все же
    Сначала мы боялись, что не сможем нанять крутых спецов по нему, но потому выяснилось, что даже крутые спецы по нему сидят без работы и прибежали к нам по первому зову.

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

    У ребят все отлично :) Они написали штуку на RoR, которая быстро стала популярной, появилась проблема с производительностью, переписали (язык имхо вообще не ключевой фактор, хотя Go в их случае — хороший выбор), тем самым избавились от проблемы. Классика.
  • Лучшие компьютерные игры всех времен и народов по версии хабрасообщества 2013 года
    +2
    Messiah (Мессия)




    Игра прошла незамеченной, но на мой взгляд, достойна внимания. Неплохая по тем временам графика и оригинальный геймплей (можно вселяться во любых врагов и играть, управляя ими). Интересные головоломки и забавная концовка.
  • Лучшие компьютерные игры всех времен и народов по версии хабрасообщества 2013 года
    0
    Да, шикарная была игра
  • «Чистый интернет» в Костромской области
    0
    Согласен со всем, только не уверен что ЛБИ будет за что-то отвечать. Они декларируют какие-то гарантии безопасности посещения белых сайтов? Какую они будут нести ответственность, в случае ошибочного попадания сайта в белый список?
    Интересно, зарплату эти эксперты будут получать из чьего кармана.
  • «Чистый интернет» в Костромской области
    0
    Ну для начала подчеркну — я против введения цензуры в интернете на законодательном уровне в любом виде. Эта вся мнимая забота напоминает мне лозунг «Железной рукой загоним человечество в счастье!». Какая бы система цензуры в интернете не будет принята, — лучше не станет, станет хуже.
    А теперь отвечу:
    WOT позволяет бороться с «Они же плодятся», продолжая ограничивать доступ к опасным сайтам по принципу черного списка Это лучше чем белый список разрешенных сайтов и лучше, чем черный список от государства.
    Я просто в Вашем предыдущем комментарии увидел смысл «WOT хуже чем белый список от государства, WOT не надежен, лучше пусть будет белый список разрешенных сайтов». Я видимо ошибся.
  • «Чистый интернет» в Костромской области
    0
    Ну если цель стоит ограничить функциональность строго определенным набором задач — это разумно.
    Видимо такая цель у «Чистого интернета» и стоит. Тогда все правильно.
  • «Чистый интернет» в Костромской области
    +2
    «Чистый интернет» — это та же система ранжирования сайтов по принципу «нравится-не нравится». Разница лишь в том, кто может влиять на рейтинг. В случае WOT — все пользователи, а не «Лига Безопасного Интернета».
  • «Чистый интернет» в Костромской области
    +16
    Бессмысленно вообще вводить централизованную цензуру.
    Мне больше нравятся решения типо Web Of Trust.
  • «Чистый интернет» в Костромской области
    +38
    > Фи, можно подумать Вам прям 250 миллионов успеете прочитать. А работать когда?
    При чем тут это? Я может хочу прочитать 1 или 2 из 250 миллионов. Но где гарантия, что они попали в список из 500 тыс. проверенных ресурсов? Вероятность этого 0.2%
    Т.е. с вероятностью 99.8% любой ресурс, который я захотел посетить, запрещен.
    Что вообще за идиотизм — все, что не разрешено => запрещено.
    Составили бы лучше список 500 тыс. запрещенных ресурсов с «порнографией, сценами насилия и жестокости»