• Skype повернулся лицом к людям?
    +2
    Зачем с одного костыля на другой? Скайп подходит для аудио и видео звонков, уж очень приемлемое качество даже на плохих каналах, не стречал ничего лучше, если кто посоветует да ещё мультиплатформенное буду рад.
    Как месенджер он не подходит для работы, в отличее от Slack и подбных ему, где и история хранится на серверах, и поиск по ней хороший, и ссылки на сообщения можно получить, передать и по сети, добавить в избранное, да и интеграция с рабочими инструментами радует. Понятно, что тоже не без грехов, но лучше обычных месенджеров для потрепаться без истории.
  • Что нужно знать о Битриксе некоторым потенциальным покупателям
    –12
    Я уважаю Битрикс, это большой добротный проект с отличной функциональностью и если он подходит под нужды бизнеса, то стоит выбирать не задумываясь.

    Но вот двухсмысленные намёки на репутацию весьма неприятны, она точно заслуженная
    www.govnokod.ru/search?search=bitrix&language=
    www.govnokod.ru/search?search=%D0%B1%D0%B8%D1%82%D1%80%D0%B8%D0%BA%D1%81&language=
    Думаю, треть претензий там надуманные и уже исправлены, но представление уже можно составить.
  • Microsoft увольняет 7,8 тыс. сотрудников и списывает активы Nokia
    +1
    В Майкрософт в очередной раз совершили маленькую революцию, объединив разные платформы в одну, потому сокращение назревало. Вряд ли это конец, за ребятами из нокии могут последовать старые разработчики из самой MS, больно уж хороши концепты у последних продуктов компании, а вот качественно доводить их до конца у текущих команд далеко не всегда получается.
  • «Убийца Bootstrap» — Material Design Lite. Версия 1.0.0
    +1
    @import "variables.less"; @import "mixins.less"; .sidebar { .make-xs-column(2); .make-md-column(3); .make-lg-column(3); .make-lg-column-offset(1); } <div class="sidebar"><div>

    p.s. Вот благодаря таким -8 я не могу даже код отформатировать.
  • «Убийца Bootstrap» — Material Design Lite. Версия 1.0.0
    –16
    Как фреймворком, отрывая руки за .row или .col-md-* в вёрстке.
  • Самозащита антивирусов
    +3
    О, боже. У вас похоже даже заготовка ответа на критику есть. Хотя речь о совсем другом. Я не высказывал сомнений в результатах, а лишь указал на неактуальность софта и списка антивирусов, не хвалю тот же MSE. Но нельзя делать вид, что его нет ru.wikipedia.org/wiki/Microsoft_Security_Essentials#.D0.A0.D1.8B.D0.BD.D0.BE.D1.87.D0.BD.D0.B0.D1.8F_.D0.B4.D0.BE.D0.BB.D1.8F
  • Самозащита антивирусов
    +17
    Шёл 2015 год, давно уже вышла windows 8, вот-вот появится windows 10, более 6 лет как майкрософт предоставляет в поставке с виндой свой бесплатный антивирус. А в обзоре windows 7 и отсутствие Microsoft Security Essentials.
    Понимаю, что Касперский занёс вам денег, но вы думайте на каком ресурсе лапшу вешать.
  • Чего ждать, когда ждешь ребенка: PHP 7, часть 2
    0
    Как правило это длинные задачи, когда процесс работает больше секунд. Например работа в режиме демона с сокетами, или парсинг, обсчёт большого количества данных, постороение каких нибудь кайнтеров или коэфициентов.
  • Почему Doctrine ORM плохо подходит для PHP
    0
    Согласен. В идеале да, например, в .net вполне себе удобно реализовано. А на практике в doctrine модельки такие, что ни одной засранной AR не снилось. Плюс всё разнесено по 100500 слоям из-за чего малейшее изменение влечёт кучу правок.

    Довольно хорошо знаю и понимаю теорию, ещё лет пять назад молился на паттерны, увлекался ddd, а последние годы больше увлекаюсь гряным кодом с костылями. На моей личной практике такой подход оказывается более эффективным.
  • Неразбериха с названиями должностей
    0
    Т.к. это перевод, попытаюсь ответить за автора.
    1. Цену себе знать всегда полезно. Многие даже ходят по собеседованиям, хотя не собираются работать, я иногда тоже так делаю, заранее предупреждая о своей незаинтересованности. Не хочется в один прекрасный день обнаружить, что ты тот самый Джон Доу, который загнил сидя на одном месте.
    2. Техническое собеседование такое же дырявое решето как и hr-ы работающие по кейвордам. На большинстве собеседований спрашивают джуниорские вопросы, на знание синтаксиса и никак не открывающие твои архитектурные вопросы. Хорошо подготовленный джун может легко отсобеседоваться на сеньёра. И в тоже время сеньёры могут подзабыть основы, когда работают через всякие фреймворки. Очень часто вопросы берут из подготовительных курсов по какой-нибудь сертификации. так что подготовиться не проблема.
  • Почему Doctrine ORM плохо подходит для PHP
    –1
    >>Причем тут eloquent?
    да блин, я и пишу что НИ ПРИ ЧЁМ, это не дело ORM заниматься контролем за количеством Entity. Я же это пишу уже который раз:
    >>плясок вокруг сраной модельки из-за того, что ей поручают заниматься не её делами
    >>IM при нормальной архитектуре заменяется DI.
    >>Именно DI, потому что мы даже напрямую не пляшем не с EM как в случае doctrine
    >>Смысл в том, что нужную энтити вытаскивает другой инфраструктурный код

    извините, умываю руки, вы всё равно не читаете что я пишу.
  • Почему Doctrine ORM плохо подходит для PHP
    –1
    God Object — это не про доуступность, а про функциональность, доктрина класичейский его представитель, потому что берёт на себя слишком много функцинала, который может обеспечиваться другими инфраструктурными уровнями. Не зря е компоненты начали жить отдельной жизнью.

    UoW прекрасно работает, когда у нас долгоживущее приложение, мы можем хоть год однажды вытащив объект работать с ним не синкая с базой. А когда у нас долисекундный цикл, то оверхед от реализации UoW съедают прибыль от ленивости операций. А хуже всего, что при реализации этой ленивости в доктрине была куча багов, я имел анальное удовольствие пару раз пробираться через слои абстракции в поисках проблемы с ленивой подгрузкой.
  • Почему Doctrine ORM плохо подходит для PHP
    –1
    >> Вот если бы мы инджектили энтитю в конструктор нашего контроллера — можно было бы говорить про DI.
    Laravel умеет инджектить в метод, не только в конструктор. Если хотите, инджектите в конструктор. Смысл в том, что нужную энтити вытаскивает другой инфраструктурный код и пробрасывает её по цепочки и в мидлеваре и в экшен контроллера. Инджект приятнее и читабельнее, удобно тестировать, нежели создание контейнера их которого потом внутри метода тянется $this->get('items_repository')->findItem();

    IM в простом виде это и есть конструкция, проверяющая наличие объекта в карте. Это не дело ORM следить за Identity map.
    if (!Registry::has('Item:'.$identity)) Registry::set('Item:'.$identity, Item::find($identity)) return !Registry::get('Item:'.$identity);
    UoW примерно то же. сразу заботимся чтобы пользователь работал с IM объектами, а затем делаем методы save-delete отложенными. Никакой хайлевел магии нет, чтобы захломлять ей бизнеслогику и клепать жуткие контроллеры пляшущие вокруг EM.
  • Почему Doctrine ORM плохо подходит для PHP
    0
    Посмотрите на свой пример и на мой, у вас пляска вокруг EM, хотя это должен быть инфраструктурный слой и он не должен засирать бизнес логику, даже в случае с AR код получается чище. Потому что EM — это типичный God Object, который берёт на себя всё, при этом анемичная кодель представляет собой спагетти из анотаций, репозитории с своим подъязыком DQL, ограниченные IM и UoW, rкоторые всё равно не гарантируют атомарность и целостность данных.

    Я был одним из первых поклонников Doctrine 1, нес её в массы, потому что она помогала решать проблемы, а вторая их только добавляет.
  • Почему Doctrine ORM плохо подходит для PHP
    0
    Именно DI, потому что мы даже напрямую не пляшем не с EM как в случае doctrine, не с контейнером App в случае Laravel, а именно инджектится нужный объект в нужный метод function(App\Item $item), этакий чёрный ящик.

    Про баги БАГИ К сожалению не могу нарыть твит, где авторы сами иронизировали, что приходится по три дня рыться, чтобы выяснить в чём баг.

    Ну а что называется ParamConverter, какая разница как нызывается, если он подтверждает удобство инъекций. Какие-то попытки засунуть голову в песок и придраться к названиям.
  • Почему Doctrine ORM плохо подходит для PHP
    0
    А в Laravel это решается через DI, мы просто биндим модель к запросу и дальше получаем уже готовые объекты в методах
    Route::model('item', 'App\Item');
    Route::get('item/{item}', function(App\Item $item) {}); // Вуаля у нас нужный айтем, пустой если не передан id или нужный если он передан, а в случаей отсутствия мы сюда не попадаем, так как генерится ошибка.
    Для symfony есть похожий бандл.
    Вы понимаете каков машдаб плясок вокруг сраной модельки из-за того, что ей поручают заниматься не её делами, да ещё она и делает это криво.

    p.s. Кстати, для Doсtrine 1, были решения в пару строк кода, которые добавляли те же IM и UoW. Не велика беда добавить сей функционал туда где надо, а это малюсенький процент от общего количества проектов. Но во второй версии плясали от горячей печки в итоге и сами обожглись и еду недоготовили, выпустив сырой продукт.
  • Почему Doctrine ORM плохо подходит для PHP
    0
    >>По сути правильно на каждый запрос создавать свой IM и свой UoW
    А в чём тогда их смысл, если в паралельном запросе мы снесли вообще данную запись, которую потом считаем существуюей ибо на у нас извлекается из DI и даже есть цепочка действий с ней в UoW. И вообще это не дело ORM, это тупо зависимости.

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

    AR в Laravel — совсем не простой прямой мэппинг строки в таблице на объект. Во первых там есть работа с колекциями как ин мемори, так и при гидрации из базы, в любой момент мы моеж переопределить и получить тот же НЕ прямой мэпинг и мделать это в разы проще чем в Doctrine. Поддержка связей для вытаскивания связанных сущностей. Скоупы, которые являются аналогом DDD-шных критерий. Разные мутаторы и ассесоры, опять же выходящие за рамки прямого мэппинга данных. Обсервинг и т.д.
  • Почему в России так мало committers в крупные open source проекты
    +18
    rambler — nginx
    badoo — memcache и много чего для php
    sphinx — аксёнова
    percona — mysql и его стек
    mailru — tarantool
    jetbrains — kotlin
    yandex — cocaine
    vk — kPHP
    Энвижен крупно вложился в postgre

  • Почему Doctrine ORM плохо подходит для PHP
    0
    Там же написано — не Java, потому что запрос живёт мало, один пользователь сделал один запрос, он отработал один раз и умер, почистив всё за собой. Следующий запрос таскает заново все объекты из стороджей. Да, есть демоны, но доктрина там не годится, так как не поддерживает асинхронную работу с базой.

    Identity Map действительно антипаттерн, т.к. является обычным Registry и вместо явной передачи объекта по цепочки мы таскаем его из реестра. (Опять же в рамках умирающего php). IM при нормальной архитектуре заменяется DI. Хотя даже DI в таком контексте неоднозначен и является переусложнением :).

    Ленивая загрузка бесмыссленно, за исключением подтягивания связей, а в доктрине она превратилось в портал для ошибок и магической логики из-за чего я отказался от Doctrine 2, сейчас, наверное, они почти исправлены, но они были даже спустя 1.5 года после стабильной «версии».

    Data mapping тоже отдельная история, он вроде есть, но в результате сводится к прямому биндингу как при AR одна ентити, один аттрибут — одна таблица, одно поле. Сложный биндинг на разные таблицы и разные стороджи нужно делать костылями.

    Ну и самое важно это AR которое используется в современных фреймворках это вовсе не классичессичейский фаулеровский AR, а нечто большее. И при нем ничто не мешает использовать IM, UoW, LL, DM и городить DDD.

    p.s. Спасибо, что напомнили в очередной раз заняться Pg, раз сейчас в отпуске, а то до сих пор использую его на уровне mysql. Раз уж про обёртки над стороджем, возможно вам будет интересно github.com/sad-spirit/pg-builder github.com/sad-spirit/pg-wrapper
  • Разбираемся с UEFI и GPT: установка Windows и Kubuntu на один диск
    0
    Та же беда была, после обновления кубунты и двух перезагрузок всё само починилось и винда нашлась грабом
  • Релиз новой версии WordPress 4.2 Powell и брешь в безопасности
    +4
    А при чём левый сторонний плагин до wordpress. Я напишу свой с eval($_GET['code']) и будет виноват WP? А ещё такой же бандл создам для symfony и буду на каждом углу заявлять о том, что фреймворк — решето.
  • PHP-Дайджест № 62 – интересные новости, материалы и инструменты (26 апреля – 11 мая 2015)
    0
    У вас очень правильное замечание. Мне кажется следует использовать правило как в других языках — больших анонимок лучше использовать полное function, а для однострочных ~>
    В примерах есть usort($array, ($a, $b) ~> $a->val <=> $b->val);
    usort($array, function($a, $b) { $a->val <=> $b->val; }); — PSR этот код просит разнести на пару строк из-за {}
  • Vivaldi TP3 — делаем браузер вместе
    0
    Там же в основном шаренная память, а вот если съедается реально 5-8 гигов, то это ненормально
  • Почему вас все равно взломают
    +2
    Самое важное — понимать, что вас всё равно взломают, а то и сами сломаете. Потому нужно заботиться о безопасности информации хранящейся в электронном виде, шифровать и бэкапить, тем самым миниминизируя потери.
  • PHP-Дайджест № 61 – интересные новости, материалы и инструменты (13 – 26 апреля 2015)
    0
    Теперь я знаю как объяснить музыкантам систему приведения типов и чем это чревато, чтобы понимали программерские шутки.
  • Вышла Ubuntu 15.04 (Vivid Vervet)
    0
    Может кто апгрейдился на новую kubuntu, если ли там проблемы из-за новых кед, или остаются старые? или лучше с нуля развернуть?
  • Еженедельная сборка Vivaldi 1.0.156.2
    0
    С KDE проблем не замечено, даже при обновлениях, всё продолжает работать. Одна только проблема раздражает — работа с двумя мониторами, менюшки всегда лезут открываться на первый.
  • Симфония самоподдува
    0
    Долго искал идеальный фреймворк, писал свои, но с годами пришёл к простой для меня истине — выбирать надо не лучшее, а наименее противное. Нужно выбросить свой перфекционизм и начать жить.

    Статья очень хороша, пригодиться для тех, кто рвётся к symfony любой ценой, хотя левел не позволяет и пишут на нём как на yii. На поддержку приходил проект на SF1, ребята не осилели доктрину, подключили котеровскую либу для работы с БД, но часть команды видимо и её не осилило, наклепали запросов без плейсхолдеров с данными прямо с GET. Дело не во фреймворке, а в руках и головах тех, кто с ними работает.
  • Альтернативы Git for Windows
    +1
    Забавный факт, что если на винду поставить виртуальную машину с linux, то несмотря на оверхед виртуализации всё работает гораздо быстрее. Правда этот кейс работал пару лет назад под W7, не знаю как дела обстоят сейчас.
  • Как я решил уйти в геймдев
    +1
    Почему недокументированный? Да и вообще, опыт видно в ходе собеседования, без всяких бумажек, потому как и 10 лет опыта бывают как один на нормальном месте. По своему опыту могу сказать, что без проблем можно прокачаться на премидл за месяц, а затем пройти собеседование. Я уже дважды подключался в проекты на других технологиях для расширения кругозора, никаких проблем нет, оба раза проходил с первого раза.
  • Дорогой веб-дизайнер, давай перестанем нарушать возможность скроллить
    +2
    В win pnone отлично реализовано через показ следующей части контента. А вот всякая анимация как в статье — только раздражает.
  • Как я решил уйти в геймдев
    +2
    Почему бы набив минимальный скил не пройтись по собеседованием и не устройться к компанию хоть за самые минимальные деньги. А уже поднабравшись опыта идти на вольные хлеба. Ходить по граблям долго и больно, а в команде опыта наберёшься очень быстро.
  • Топ-5 самых дурацких антивирусов. Записки хулигана
    +2
    А как же ложные срабатывания, в моё время это была его основная фишка.
  • Результаты опроса популярности PHP фреймворков от Sitepoint
    0
    Вы минимум нолик потеряли в процентах, быть разница всего 20%, то symfony был бы лидером, а так ну очень уж большой оверхед для подавляющего большинства веб проектов.
  • Dart 1.9. Релиз, который вы ждали
    +1
    Гугл большая корпорация и пилят разные продукты, которые могут пересекаться и даже конкурировать, наличие андроида не мешает им лепить хромобуки.
  • Dart 1.9. Релиз, который вы ждали
    +3
    Это же гугл, так что либо закроют через пару лет, либо перепишут более чем полностью. Но судя по изменениям они изменили таргетинг и нацеливаются на серверсайд программирование. Плюс у них своя браузерная ОС, которую вроде как надо развивать. Так что я склоняюсь ко второму варианту.
  • Встречайте Envoyer.io (часть 1)
    0
    Скорее всего там аналог rocketeer, поддерживается сразу несколько релизов которые переключается линком, миграции накатываются до переключения релизной ветки, так что проблем быть не должно.
  • Не учите фреймворки, учите архитектуру
    +2
    Плохие советы, 99% не смогут нормально реализовать функциональность фреймворков, особенно всякие браузер специфик фичи. Не говоря уже о том, чтобы документировать это для работы в команде. Когда ваши 30 строк превращаются в 300+, приходит понимание, что ты что-то делал не так, потому фреймворки нужно не только изучать на уровне АПИ, но и лезть во внутрь, чтобы понять, как реализуется эта архитектура без набивания своих шишек и багов на проекте.
  • Атомный реактор в каждый сайт
    0
    Скорости работы php уже давно хватает, как вы сами писали в данной ветке — подпирать приходилось сервер и хранилище, а фейсбуку мощностей хватало ещё до всяких придумывания всяких HHVM, хватало даже древнего php4, с тех пор производительность пилят, хотя она уже была ДОСТАТОЧНОЙ, в реальности ускорее получается небольшое, потому что упираемся во всякие сторадж, а не рассчитываем сложные алгоритмы для массивов данных для бигдаты.

    Теперь о статье. В традиционном подходе у php не проблема со скоростью, а с тем, что на каждый запрос выделяется отдельный процесс. Соответственно, если ты держишь по вебсокетах 1000 конектов, то у тебя поднимается ОДНОВРЕМЕННО 1000 процессов со скриптом. По сравнению с этим конкурентность 128, после которой падало — это ничто. В такой момент приходят к единому демону, который принимает все запросы и хендлит их по мере надобности. Автор же запустил в таком режиме cms-ку, которая изначально не задумывался для работы в режиме демона, это круто, попутно объяснил как надо и не надо писать, чтобы не было проблем с демонизацией. Современные же php фреймворки с DI и middleware как правило не имеют проблем с демонизацией, пишите на здоровье.

    Но все эти асинхронности и статическая типизация десятилетиями валяются на задворках pecl, так как процесс родился-отработал-умер практически идеален для бизнеса и для большинства задач. Потому php-шники В СРЕДНЕМ получают больше, чем сишники, для нашей страны это 2000 против 1700.
  • Еженедельная сборка Vivaldi 1.0.111.2
    +2
    Дзякуй.