Habr Geektimes Toster Moikrug Freelansim
.NET Knowledge Base
  • Posts
  • Users
  • Hubs
  • Companies
  • Become an author
Log in Sign up
9.0
Karma
0.0
Rating
2
Followers
2
Following

Александр Смага to0n1

User

Profile

Posts 2

Comments 42

Bookmarks 937

  • Опыт использования redux без редьюсеров
    11
    to0n1 September 28, 2018 at 03:07 PM
    +2
    Я совместил определение констант экшшинов и редьюсера в одном файле


    этот подход называется duck modules
  • Технические особенности проведения ICO. Начало
    37
    to0n1 November 12, 2017 at 04:14 AM
    0
    Есть «интерфейс» для токенов(ERC20), который приводит их к общему виду. Соответсвенно биржам намного меньше работы по внедрению новых токенов
  • Введение в часто используемые особенности ES6. Часть 2
    18
    to0n1 November 3, 2017 at 04:35 PM
    0
    Возможно имелся ввиду DocumentFragment с добавлением через document.createElement()
  • Использование событийной модели в Doctrine 2 + Symfony 3
    52
    to0n1 October 9, 2017 at 03:29 PM
    0
    Сейчас же есть entity_listener'ы они привязываются к конкретной сущности
  • Построение модульной архитектуры приложения на Forwarding-декораторах (авторский перевод)
    12
    to0n1 May 30, 2017 at 12:11 PM
    0
    да, по сути в magento 2 это обычные middleware, подход мне нравится, хоть и довольно тяжелый в дебаге, например многими любимый guzzle использует такой подход без кодогенерации
  • Шаблоны проектирования с человеческим лицом
    98
    to0n1 April 10, 2017 at 10:37 PM
    +1
    кстати хороший пример composite это symfony form компонент, там как раз отдельный элемент формы и форма реализуют один интерфейс (методы setData, submit etc.)
  • Шаблоны проектирования с человеческим лицом
    98
    to0n1 April 10, 2017 at 10:35 PM
    +1
    Тоже заметил данную неточность. Еще по моему мнению пример декоратора также не верен, так как не показывает основное отличие декоратора и прокси, а именно добавление нового поведения/функционал к объекту. В примере показан обычный прокси. Классический пример декоратора div/table renderer для элементов формы имеет более «человеческое» лицо
  • Архитектура растущего проекта на примере ВКонтакте
    47
    to0n1 February 26, 2017 at 01:06 AM
    +2
    при чем тут ооп ?!?! теже массивы переработали полностью начиная с 7.0
  • 19 неожиданных находок в документации Node.js
    72
    to0n1 December 24, 2016 at 02:09 AM
    0
    можете по п5 подробнее?
    с остальным согласен более чем полностью!
  • Глупые трюки с ES6
    71
    to0n1 October 28, 2016 at 05:15 PM
    0
    еще есть замена копированию свойств объекта, и их переопределения

    const oldObj = {a: 1, b: 2, c: 3};
    const newObj = {...oldObj, c: '3a', d: 4};
    
    console.log(newObj); // {a: 1, b: 2, c: '3a', d: 4};
    
  • Нянчим проект на React-redux с пелёнок
    32
    to0n1 September 23, 2016 at 12:06 AM
    0
    Кстати, правильно ли я понимаю что судя по коду контейтера, после его отображения и запроса данных через XHR, компонент еще крутит индикатор загрузки? никак не боролись с задержкой транзишина на новый роут до подгрузки критичных данных? например redux-async-connect
    код
    if (!this.props.firstLoad) {
    this.props.loadManagers(this.props.location);
    }
  • Нянчим проект на React-redux с пелёнок
    32
    to0n1 September 22, 2016 at 11:56 PM
    +1
    Спасибо за статью! Мне сейчас приглянулся способ модулирования утками, не рассматривали его? если да, то почему не понравился?
  • Кодь кто живой: Livecoding.tv запустил онлайн-хакатон по созданию своего приложения
    15
    to0n1 April 15, 2016 at 12:32 PM
    +3
    плюсую! UI тормозит, флеш плеер то еще УГ
  • Асинхронное параллельное исполнение в PHP
    23
    to0n1 March 8, 2016 at 09:43 AM
    0
    Спасибо за довольно подробный анализ!
    Остается вопрос почему не взять готовое решение, коих уже куча? Они ведь уже делали такой же анализ до вас!
    Вот навскидку https://github.com/symfony/process/blob/master/Process.php
  • Air Datepicker, легкий и красивый выбор даты
    35
    to0n1 December 3, 2015 at 12:58 AM
    0
    Выглядит приятно! Я тоже плюсую использование moment.js
  • PHP-Дайджест № 74 – интересные новости, материалы и инструменты (5 – 22 ноября 2015)
    9
    to0n1 November 23, 2015 at 10:53 AM
    +1
    Спасибо за подборку! Думаю что espresso не к месту немного, потому как проект мертв еще с 2014 года…
  • Jii: Полноценный Query Builder для Node.js с API от Yii 2
    16
    to0n1 October 15, 2015 at 12:14 AM
    0
    Думаю проще сказать indexBy принимает функцию редьюсер
  • Compalex: сравнение схем двух баз данных
    27
    to0n1 October 5, 2015 at 08:18 PM
    0
    Думаю для таких случаев, было бы хорошо иметь поддержку SQLite
  • Неочевидные проблемы с быстродействием в Doctrine, связанные с гидрацией объектов
    11
    to0n1 July 21, 2015 at 11:29 AM
    +2
    Думаю в виде отдельного бандла мало кто будет использовать ваше творение. ПР в доктрину был бы куда полезнее
  • Немного о юнит-тестировании и внешних API в PHP
    11
    to0n1 June 23, 2015 at 01:02 PM
    +2
    В версии 6.0.1 так же поменялся способ подстановки мок-ответов. Теперь вместо EventSubscriber этим занимаются так называемые хендлеры.
    Тест теперь выглядит вот так.
    Тест
    use GuzzleHttp\Client;
    use GuzzleHttp\HandlerStack;
    use GuzzleHttp\Psr7\Response;
    use GuzzleHttp\Handler\MockHandler;
    
    class APITest extends \PHPUnit_Framework_TestCase
    {
        /** @var API */
        protected $api;
    
        /** @var Client */
        protected $client;
    
        /** @var MockHandler */
        protected $mockHandler;
    
        protected function setUp()
        {
            $this->mockHandler = new MockHandler();
            $this->client = new Client(['handler' => HandlerStack::create($this->mockHandler)]);
    
            $this->api = new API($this->client);
        }
    
        protected function tearDown()
        {
            unset($this->api, $this->client, $this->mockHandler);
        }
    
        /**
         * @dataProvider recentTransactionsDataProvider
         *
         * @param string        $response
         * @param int           $expectedCount
         */
        public function testGetRecentTransactions($response, $expectedCount)
        {
            $this->setUpExceptionAssertion($exception);
            $this->mockHandler->append(new Response(200, [], $response));
    
            $result = $this->api->getRecentTransactions();
    
            $this->assertInternalType('array', $result);
            $this->assertCount($expectedCount, $result);
        }
    }
    

  • Готовимся к собеседованию по PHP: псевдотип «callable»
    65
    to0n1 June 10, 2015 at 11:25 PM
    0
    Очень часто встречаю во всяких event disaptcher'ах регистрацию слушателей как [$this, 'methodName']
    Так вот это работать и не будет в вашем примере. PHP 5.6.6

    код
    <?php
    
    class a{
        function b () {
            echo 'b';
        }
    }
    
    $a = new a();
    [$a, 'b']();
    

  • Готовимся к собеседованию по PHP: псевдотип «callable»
    65
    to0n1 June 10, 2015 at 09:48 PM
    0
    В PHP использовал пару раз и пару раз видел в Doctrine2, но проверку типа на \Closure встречаю очень часто. В Scala приходилось использовать немного чаще. Но суть вопроса на понимание как устроены лямбды внутри.
  • Готовимся к собеседованию по PHP: псевдотип «callable»
    65
    to0n1 June 10, 2015 at 06:43 PM
    0
    Спасибо за статью! Сам часто задаю вопросы о callable на собеседовании. К сожалению многие спотыкаются если вопрос начать именно зачем ввели такой странный магический метод __invoke.

    В вашем последнем примере есть неточность, как вы сами написали callable не всегда может быть вызвана через скобки, поэтому безопасно всегда использовать call_user_func
  • Готовимся к собеседованию по PHP: ключевое слово «static»
    70
    to0n1 June 8, 2015 at 11:40 PM
    +1
    Я думаю fear86 говорит о следующем кейсе
    код
    <?php
    
    class firstClass
    {
        /** @var string */
        protected $message;
    
        public function __construct($message)
        {
            $this->message = $message;
        }
    }
    
    class secondClass extends firstClass
    {
        /** @var firstClass */
        protected $firstClass;
    
        public function __construct(firstClass $firstClass)
        {
            $this->firstClass = $firstClass;
        }
    
        public function accessProtected()
        {
            return $this->firstClass->message;
        }
    }
    
    $a = new firstClass('Hello protected');
    $b = new secondClass($a);
    
    var_dump($b->accessProtected());
    
    

  • Symfony2. Универсальный инструмент для быстрого приготовления табличных списков в административной панели
    6
    to0n1 April 7, 2015 at 11:20 PM
    0
    Сам писал аналогичный бандл для CRM, взгляните возможно подчерпнете что-то для своего детища.
  • Знакомство с Oro Platform
    13
    to0n1 October 20, 2014 at 02:44 PM
    0
    Нет, для вебсокет сообщений используется решение на PHP (упомянутый выше Ratchet WebSocket Server)
  • Знакомство с Oro Platform
    13
    to0n1 October 20, 2014 at 11:34 AM
    +1
    node.js — опциональная зависимость, без него все будет работать, модули будут грузиться on demand асинхронно.

    У нас был выбор между портом r.js на java и собственно запускать r.js из родного node окружения. Мы приняли решение так как нам показалось, что сам r.js работает оптимальнее на node и шансов, что на сервере будет стоять node.js больше чем шансов найти там java
  • Использование паттерна Proxy для организации кэширования на PHP
    24
    to0n1 October 16, 2014 at 04:25 PM
    0
    Я подразумевал тип в том числе.
  • Использование паттерна Proxy для организации кэширования на PHP
    24
    to0n1 October 16, 2014 at 12:20 AM
    +2
    Думаю что Вы не совсем разобрались с этим паттерном. Суть в том, что прокси должен иметь тот же интерфейс как и реальный объект.

    Я посоветую доклад Marco Pivetta, с которым он уже неоднократно выступал на конференциях.
  • Хорошая практика в Symfony 2 (по личному опыту)
    30
    to0n1 October 15, 2014 at 03:16 PM
    +1
    Единственный плюс на yml был, что сторм научился дополнять описание entity в yml. Чего нет в аннотациях пока что.


    Использую Symfony2 Plugin + PHP Annotations дополнение работает на ура!
  • Хорошая практика в Symfony 2 (по личному опыту)
    30
    to0n1 October 15, 2014 at 01:40 PM
    0
    У нас в проекте помимо доктриновских аннотаций используются и другие для полей(JMSSerializer, BeSimpleSoap, и свои кастомные).
  • Хорошая практика в Symfony 2 (по личному опыту)
    30
    to0n1 October 14, 2014 at 09:07 PM
    +1
    Думаю что Ваш список можно дополнять до бесконечности…

    От себя могу добавить:
    • Регистрировать форм типы в DI, а не создавать через new (Иначе не работают form type extensions)
    • Использовать lazy прокси для зависимостей в twig extension (Иначе строится полное дерево зависимостей на каждый request)
    • По возможности не использовать трейты совместно с кофигами в аннотациях (нет возможности перекрыть аннотации в классе использующем трейт)
  • Дайджест интересных новостей и материалов из мира PHP № 40 (14 апреля — 27 апреля 2014)
    27
    to0n1 May 12, 2014 at 01:12 PM
    0
    Мне показалось что Structr очень похож на symfony2/config дерево, кто то пользовался им? в чем преимущество?
  • Autotest для PHP
    15
    to0n1 March 16, 2014 at 01:47 PM
    +1
    Спасибо за инструмент. Приятно видеть хороший код на PHP!

    От себя хотел бы добавить, что использование таких компонентов как symfony/console облегчили бы вам жизнь и сделали код еще проще, а symfony/process позволили бы также решить проблемы запуска в различных ОС, для вычисления хеш сум думаю было бы удобнее использовать RecursiveDirectoryIterator.
  • Дайджест интересных новостей и материалов из мира PHP № 35 (26 января — 9 февраля 2014)
    11
    to0n1 February 13, 2014 at 08:24 PM
    +1
    Сразу так и не припомню, если будет что появляться, буду просить автора включить в дайджест )
  • Дайджест интересных новостей и материалов из мира PHP № 35 (26 января — 9 февраля 2014)
    11
    to0n1 February 10, 2014 at 12:06 PM
    +3
    Спасибо за очередной хороший выпуск.

    В дополнение может кому понадобится подборка хороших практик от William Durand:
    PHP slides
    PHP extended slides
  • Делаем вебсокеты на PHP с нуля. Часть 2. IPC
    15
    to0n1 February 5, 2014 at 11:41 AM
    0
    Сокеты используют все. Возможно вы имели ввиду, что он использует select вместо libevent?

    Тут Вы правы, но я имел ввиду парные сокеты для коммуникации воркеров.

    Хорошо что у вас есть опыт использования ratchet. У меня к вам есть пара вопросов.

    Боюсь что я не настолько компетентен в этом вопросе, именно поэтому просил Вас сделать сравнение…
  • Делаем вебсокеты на PHP с нуля. Часть 2. IPC
    15
    to0n1 February 4, 2014 at 01:33 PM
    0
    Lib-event опциональная зависимость.
    Allows for use of a more performant event-loop implementation.


    Насколько я помню, react так же использует сокеты для коммуникации
  • Делаем вебсокеты на PHP с нуля. Часть 2. IPC
    15
    to0n1 February 4, 2014 at 12:26 PM
    0
    Спасибо за статью. Мы используем в проекте Ratchet. Можете прокомментировать чем ваше решение отличается/лучше от уже устоявшейся, стабильной библиотеки?

    Спасибо
  • Интеграция аутентификации Symfony2 и трекера Jira
    11
    to0n1 December 22, 2013 at 02:41 PM
    0
    Насколько я помню(говорил Joseph Rouff из SensioLabs на конфе слайды с доклада), то не обязательно создавать новый класс токена, ведь в симфони уже есть UsernamePasswordToken его можно переиспользовать
  • ← here
  • there →
  • 1
  • 2

Info

  • Rating Does not participate
  • Activity 12/11/19, 2:31 PM
  • Registered November 20, 2012

Contribution to hubs

  • Symfony 15
  • PHP 10

Your account

  • Log in
  • Sign up

Sections

  • Posts
  • Hubs
  • Companies
  • Users
  • Sandbox

Info

  • Rules
  • Help
  • Documentation
  • Agreement
  • Terms of service

Services

  • Ads
  • Subscription plans
  • Content
  • Seminars
  • Megaprojects
If you find a mistake in the post please select it and press Ctrl+Enter to send a report to the author.
© 2006 – 2019 «TM»
Language settings
About
Support
Mobile version
Language settings
Interface
Content