Что-то в последнее время часто встречаю хранение данных, относящихся к деньгам в float. Неужели уже вычисления с плавающей точкой стали настолько точными и 2,3 + 3,2 всегда будет равняться 5,5? Зачем сразу учить плохому?
SamDark, я тут покопался на сайте конференции и не нашёл никакой программы. Можно ли как-то узнать, во сколько начнётся конференция и какое будет расписание? Если я не нашёл это то ссылки будет достаточно.
Спрашиваю я потому, что 13.05 у нас в стране рабочий день и у меня 100% будут активности по работе. Хотелось бы узнать кто в какое время будет выступать, потому как от этого зависит, есть ли смысл мне регистрироваться на конференцию.
Т.е. получается я фактически кладу в репозиторий все свои зависимости и таскаю это за собой. В чем принципиальная разница с тем, чтобы я сейчас залил в репу node_modules? Т.е. разворачивание у меня сводится просто к чекауту и всё. Возникает вопрос, зачем мне тогда .lock файл, если все зависимости я таскаю с собой в репозитории? Да и вообще тогда получается мне yarn нужен только чтобы залить зависимости в репозиторий. Я верно понимаю?
При добавлении пакета он (и все его зависимости), в виде zip архива добавляется в кеш, в папку .yarn в папке пакета (как .git)
И последствия
Можно добавлять этот кеш напрямую в гит — и тогда после чекаута у вас сразу будет актуальная версия приложения со всеми зависимостями.
Это кэш уровня проекта или пакета? Если пакета, то я получаю две копии одного и того же, одна установлена и в той же директории ещё и zip? В любом случае обычно не очень оптимально хранить иметь что-то, что можно потом установить с помощью пакетного менеджера. Это приведёт к тому, что репозиторий будет просто пухнуть, а при обновлерии пакетов в PR будут огромное количество файлов, которое по сути там не нужно.
Будет ли команда очистки кэша? Ну чтобы хоть каким-то образом поддерживать этот кэш в актуальном состоянии.
Если говорить про Opcode Cache, то в 7.1 с такими проблемами не сталкивался, потом мы сразу на 7.3 прыгнули. Т.е. я бы не сказал что он сильно забагованный был. Ну и зачем отказываться от дополнительной производительности, которую можно получить за просто так. Ну и нюанс в том, что Opcode Cache расширение ставится прямо при установке пыха, его не надо отдельно доставлять, так что проблема достаточно критична. Его придётся скорее специально отключать.
Спасибо за дайджест!
По поводу php 7.4 сразу в прод я бы не торопился. Сейчас мы сидим на 7.3, сегодня обновились до 7.3.14. До обновления, если не сбрасывать опкэш три или четыре дня подряд, начинались проблемы нереализованными (типа) абстрактными методами, которые пропадали после перезапуска fpm. Так что к 7.4 стоит подходить к осторожностью и первое время точно стоит держать руку на пульсе.
Чисто моё личное мнение.
Как ни странно, всегда можно лушче (я ещё ни разу не видел код, который нельзя улучшить), я не касаюсь [sarcasm]фатальных недостатков ПО (типа код написан не нами и код написан не на нашем любимом языке программирования)[/sarcasm]. В данном случае, если не зашли, то можно почерпнуть оттуда сведения чтобы обойти все грабли, на которые люди уже наступили в этих проектах, ну и знание какие варианты вообще есть. А вообще писать что-то своё всегда полезно, хотя бы просто для понимания.
Nelmio api doc bundle умеет генерировать документацию из аннотаций и может работать в паре с rest api bundle для симфони . Заодно можно получить sandbox на халяву так сказать. И писать ничего не надо, прямо пишем метод, в аннотациях к нему пишем документацию и эту документацию сразу преобразуем в html используя этот бандл
Запись призводится только тогда, когда большинство серверов с ней согласится, т.е. происходит синхронное согласование. Если происходит сплит, то запись согласуется решением большинства, т.е. надо чтобы было большинство в одном из регионов, иначе будет доступ только на чтение. Далее, при восстановлении соединения, надо учитывать что понадобится некоторое время чтобы нагнать репликацию и там, в зависимости от дельты, будет либо простая репликация, либо стягивание полностью снапшота переключением донора только на чтение. Как-то так.
А не сталкивались с проблемой, когда надо прочитать только что сохранённые данные? Например данные могут записаться на мастере не не успевают попасть на slave, тогда в ответе от сервера будут не все данные, которые только что ввели.
К сожалению, репорт не избавляет от необходимости обходить этот баг. По моему опыту, у разных пользователей могут быть разные, порой даже очень старые версии IE. Был случай, когда приходилось проверять скрипты в трёх(!) разных билдах одной и той же версии IE, т.к. в каждой версии были свои уникальные тараканы.
Кэширование — это только один аспект NOW(), это влияет за собой репликацию как минимум. Что касается системных часов, то я всегда считал что они должны синхронизироваться с эталоном (будет эталоном общедоступный сервер времени или локально поднятый, здесь уже не так важно).
P.S. Я редко сталкивался с проектами, в которых рассинхронизация времени на милисекунды была бы критична.
Вставлю и я своих пять копеек. Например если вы заранее знаете дату, то не стоит писать NOW() в запросе, можно вычислить время на стороне php и сразу подставить в запрос. То же самое в случае field1 -2 > 0, можно просто написать field1 > 2. Примеры синетические, но я думаю мысль в общем понятна.
Возможно я неясно выразился, вопрс касался поддержки репозиториев других систем контроля версий. Про то, что субрепозитории поддерживаются из коробки я знал и так(а это значит что и внешние репозитории меркуриал).
По поводу выташить, я предпочитаю сам контролировать, что, куда и в каком объеме тащить :).
Субрепозиторий — это полностью репозиторий со всеми плюшками, а вот достать из меркуриала пределенную директорию, не таща за собой весь репозиторий, довольно проблематично(в силу организации самого репозитория в меркуриал). В этом свн выигрывает.
Внешние репозитории поддерживаются, но надо было плясать с бубном и ставить дополнительные модули. Когда решал данный вопрос, наткнулся на модуль(кажется форест), но завести его нормально не удалось. Кстати, сейчас свн поддерживается из коробки или все еще через плагины?
Впрочем проблемы в равной степени возникают и при попытке интегрировать между собой что-то в обратную сторону, т.е. забирать чт-то из репозитория меркуриал в свн.
Можно при экспорте запихнуть в теги <?php ?> и потом просто делать include или require, так по крайней мере закешируется опкод. Это если писать в файл. Если в сессию, то такое не пойдет :(
PPS:
Да-да, мы в курсе, что Белтелеком предупреждал, не нужно 10 раз повторять.
Интересно, что следующее в планах — плановый евроремонт в дата-центре с отключением на неделю? Не сомневаемся, что в этом случае тоже предупредят заранее…
Значит все же предупреждали и отключение не было внезапным.
То, что отключали так надолго, это плохо, но попытка свалить ответственность за прощелканную вспышку на других, это как-то не очень…
Никто не мешает в nginx добавить location, который будет блокировать обращение к определенным типам файлов по расширению или просто не передавать их на обработку php. Первый вариант:
location ~ (^\dirname.*\.php$){
deny all;
}
Это только для php, для остального несложно дополнить.
А вопрос с неотдачей а обработку php решается просто более точным прописыванием того, что отдавать таки можно.
Вообще кэш можно использовать не только как промежуточный этап для хранения результатов работы с базой данных, но и просто кэшировать куски страниц, которые достаточно редко меняются, либо некоторая задержка в обновлении этих блоков не играет роли.
Например на главной странице сайта имеем список самых новых опубликованных статей(сайт не является новостным). То, что статьи будут появляться с задержкой в полчаса для редакторов сайта не играет большой роли. В таком случае, мы кэшируем просто блок с самыми новыми статьями и потом некоторое время берем из кэша. Когда блок будет удален по истечении времени жизни в кэше, мы этот блок полностью перегенерируем.
Если же на странице имеется несколько таких блоков, то чтобы избежать пиковой нагрузки на базу данных в определенные интервалы времени мы данные помещаем в кэш на определенное время + случайный период времени. Таким образом регенерация данных блоков будет происходить не одновременно и резкого возрастания нагрузки на сервер не будет.
Уважаемый, вы же все равно дергаете скрипт… Как можно понять из поста выше, я писал что можно дергать скрипт, но не накладывал никаких ограничений на то какой, на каком языке и т.д. Перловый скрипт он тот же скрипт, так что помоему мы с вами говорим об одном и том же решении, только разными словами, поправьте меня, если я ошибаюсь.
Как вариант можно использовать возможности серверов nginx или lighthttpd которые умеют перед отдачей спрашивать скрипт на предмет можно или нельзя. При этом по прямой ссылке видео доступно не будет. При таком раскладе можно публиковать не только хэш, а даже прямой урл. Кому нельзя, доступ не получат.
Мне кажется что скорее будет переход из ие7 в ие8, а доля ие6 останется, т.к. весьма сомнительно, что люди с отключенными апдейтами, вдруг их резко включат(ие7 тоже входил в обновления).
Для избежания всяких неожиданностей и неприятностей, обычно забор страницы с внешнего сайта пишу через сокеты и протокол хттп. Просто часто натыкаюсь на то, что урлы открывать с помощью стандартных функций открытия файлов открывать запрещено.