Подсказки в PhpStorm для Doctrine Entity Manager с Zend Framework

Доброго времени суток! У меня появилась небольшая проблема во время программирования контроллера в Zend Framework 2, моя среда разработки никак не хотела давать подсказок по любым объектам, связанным со встроенной ORM Doctrine.

Описание проблемы автодополнения

Я пользуюсь IDE под названием IntelliJ IDEA от прекрасной фирмы JetBrains с установленным плагином на PHP, который называется PhpStorm. Но поверьте мне, дело совсем не в ней, любая среда бы не смогла разресолвить методы встроенной в Zend Framework доктрины.

Но ближе к делу.

Idea любезно отвечает «No suggestions», мол «сори, не знаю такого», на просьбу показать методы объекта класса EntityManager, я даже сделал скриншот.

PhpStrorm No suggestions by Zend Framework 2

Танцы с бубном вокруг настроек «Include Path» не увенчались успехом, пришлось идти бороздить просторы англоязычного интернета. Решение нашлось не сразу.

читать далее «Подсказки в PhpStorm для Doctrine Entity Manager с Zend Framework»

Импорт больших файлов в phpMyAdmin

Доброго времени суток! Причиной возникновения этой заметки послужила ошибка, которую выкидывает phpMyAdmin при попытке импорта дампа базы из большого файла. Дословно она звучит примерно так: «Fatal error: Maximum execution time of 300 seconds exceeded in /opt/lampp/phpmyadmin/vendor/phpmyadmin/sql-parser/src/Lexer.php on line 227». Формулировка может отличаться в деталях. Из сообщения видно, что превышен максимальный временной лимит на исполнения скрипта, по этой причине дамп импортируется не весь и нам очень грустно. Но обо всем по порядку.

Не секрет, что для любого скрипта на PHP существуют стандартные настройки конфигурации, инициализированные в файле php.ini. Их там огромное количество и большинство из них трогать не рекомендуется.

Эти настройки глобальные, но каждый скрипт может лично для себя их изменять. Нас в первую очередь будет интересовать возможность увеличения, либо снятия лимита на максимальное время исполнения скрипта. Посмотрим как это сделать для любого скрипта и для phpMyAdmin в частности.

читать далее «Импорт больших файлов в phpMyAdmin»

Вычисление глобального индекса нити в CUDA

Доброго времени суток! Я уже несколько раз затрагивал тему параллельных вычислений, но все время это были вычисления на старом добром центральном процессоре. А сейчас я вкратце расскажу о технологии CUDA от фирмы NVIDIA, которая расшифровывается как Compute Unified Device Architecture, и служит для того, чтобы выполнять параллельные вычисления на процессоре графического устройства, а именно — видеокарточки NVIDIA.

Grid, Block и Thread в CUDA

Для того, чтобы эффективно программировать с помощью технологии CUDA, в первую очередь нужно освоиться и научиться свободно оперировать основными понятиями вычислительной модели. Их три: грид(grid), блок(block) и нить(thread), последний еще называют потоком, это синонимы.

Grid является самым верхним уровнем абстракции в модели, он трехмерный и состоит из блоков. Например, в гриде размером 2x2x2 содержится 8 блоков. В свою очередь, каждый блок содержит в себе трехмерный массив нитей(threads), которые и являются непосредственными исполнителями вычислений. К примеру, если каждый из 8 блоков содержит 2x2x1 нитей, то всего на устройстве будет 32 рабочих потока, готовых приступить к любым вычислениям, причем работать они будут параллельно.

читать далее «Вычисление глобального индекса нити в CUDA»

Сегментная адресация памяти в 32-х разрядных системах

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

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

Под словом «память» я буду подразумевать, конечно же, оперативную память компьютера. О жестком диске речь будет идти только в момент упоминания подкачки.

Деление памяти на сегменты

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

читать далее «Сегментная адресация памяти в 32-х разрядных системах»

Шпаргалка по связке VRF-MPLS-MPBGP

Доброго времени суток! Первый раз пишу о сетях и сетевых протоколах, хотя по учебе приходилось изучать очень и очень многие из них. Кроме того, в интернете целая куча документации, блогов и циклов статей по каждому из протоколов, с настройкой и прочими прелестями. Основной причиной написания этой заметки послужило то, что я составил для себя неплохую шпаргалку по протоколам MPLS, MPBGP и технологии VRF, и не хочу, чтобы она потерялась и забылась.

Сразу скажу, что информацию черпал из многих источников, затем тщательно сжимал и оставлял только самое основное. Особенно хочу выделить цикл статей «Сети для самых маленьких» — это огромные тексты на много тысяч символов, но они максимально подробно описывают многие сетевые технологии. Для этой шпоры я брал информацию отсюда и отсюда. В поисках более полной информации прошу сразу переходить на первоисточник.

читать далее «Шпаргалка по связке VRF-MPLS-MPBGP»