Blog main page
Умирает ли php?
  • Fashion
  • 2021-12-01
  • BY Mark Willy
  • 1 Mins Read

Умирает ли php?

НЕТ.

LATEST POSTS

  • <p>Повторить предыдущую команду как root</p><pre class="ql-syntax" spellcheck="false">sudo !!
</pre><p>Выполнить команду, чтобы она не сохранилась в истории</p><pre class="ql-syntax" spellcheck="false">&nbsp;ls -l
history <span class="hljs-comment"># check the history</span>
</pre><p>Поправить предыдущую очень длинную команду (откроется редактор)</p><pre class="ql-syntax" spellcheck="false">fc
</pre><p>Закрыть сессию так, чтобы процессы пользователя продолжили работать</p><pre class="ql-syntax" spellcheck="false">disown -a &amp;&amp; <span class="hljs-keyword">exit</span>
</pre><p>Очистить терминал</p><pre class="ql-syntax" spellcheck="false">ctrl + l&nbsp;<span class="hljs-comment"># L</span>
</pre><p>Посмотреть CPU</p><pre class="ql-syntax" spellcheck="false">cat /proc/cpuinfo
</pre><p>Посмотреть память</p><pre class="ql-syntax" spellcheck="false">cat /proc/meminfo
</pre><p>Посмотреть свой внешний ip</p><pre class="ql-syntax" spellcheck="false">curl ifconfig.me
</pre><p>Найти в папке с файлами текст</p><pre class="ql-syntax" spellcheck="false">grep -rn /etc/ -e text_to_find
</pre><p>Найти файлы больше 10mb</p><pre class="ql-syntax" spellcheck="false">find -<span class="hljs-built_in">type</span> f -size +10MB -<span class="hljs-built_in">exec</span> ls -lah {} \;
</pre><p>Построить дерево каталога (3 уровня макс)</p><pre class="ql-syntax" spellcheck="false">tree -L 3
</pre><p>Посмотреть процессы в виде дерева</p><pre class="ql-syntax" spellcheck="false">pstree
</pre><p>Создать ссылку из каталога в другой каталог</p><pre class="ql-syntax" spellcheck="false">ln -s /<span class="hljs-keyword">var</span>/www/apps/images.<span class="hljs-property">site</span>.<span class="hljs-property">com</span>/www name_of_link
</pre><p><br></p><h2>Список моих alias для linux</h2><pre class="ql-syntax" spellcheck="false">export CLICOLOR=<span class="hljs-number">1</span>

dexec() {
&nbsp;&nbsp;docker exec -it <span class="hljs-string">"<span class="hljs-subst">$1</span>"</span> /bin/bash
&nbsp;&nbsp;<span class="hljs-keyword">echo</span> <span class="hljs-string">"<span class="hljs-subst">$1</span>"</span>
}

alias ..=<span class="hljs-string">'cd ../..'</span>
alias ...=<span class="hljs-string">'cd ../../..'</span>
alias <span class="hljs-number">.4</span>=<span class="hljs-string">'cd ../../../../'</span>
alias ll=<span class="hljs-string">'ls -laG'</span>
alias ports=<span class="hljs-string">'netstat -tulanp'</span> <span class="hljs-comment">#for linux</span>
alias ports=<span class="hljs-string">'netstat -anvp tcp'</span> <span class="hljs-comment">#for macos</span>
alias meminfo=<span class="hljs-string">'free -m -l -t'</span>
</pre><p><br></p><h3>Чтобы добавить alias нужно:</h3><ol><li>открыть file ~/.bashrc</li><li>добавить нужные синонимы</li><li>выйти и выполнить source ~/.bashrc</li></ol>
    • Post Common Label
    • 2021-11-19

    13 полезных консольных команд linux

  • <p><strong>console.error </strong>→ Показать сообщение как ошибку</p><p><strong>console.warn</strong> → Показать сообщение как предупреждение</p><p><strong>console.info</strong> → Технически тоже самое, что console.log</p><p><strong>console.log</strong> → Показать сообщение</p><p><strong>console.debug</strong> → тоже, что и console.log, только цвет теста черный</p><p><strong>console.clear</strong> ≈ Очищает консоль</p><p><strong>console.table</strong> → Представляет массив/объект в вите таблицы</p><p><strong>console.time</strong> (с <strong>console.timeEnd</strong>) → Устанавливает таймер и помогает логировать время выполнения</p><pre class="ql-syntax" spellcheck="false">&nbsp;&nbsp;<span class="hljs-variable language_">console</span>.<span class="hljs-title function_">time</span>(<span class="hljs-string">'timer'</span>);
&nbsp;&nbsp;<span class="hljs-keyword">const</span> hello = <span class="hljs-keyword">function</span> () {
&nbsp;&nbsp;&nbsp;<span class="hljs-variable language_">console</span>.<span class="hljs-title function_">log</span>(<span class="hljs-string">'Hello Console!'</span>);
&nbsp;&nbsp;}

&nbsp;&nbsp;<span class="hljs-keyword">const</span> bye = <span class="hljs-keyword">function</span> () {
&nbsp;&nbsp;&nbsp;<span class="hljs-variable language_">console</span>.<span class="hljs-title function_">log</span>(<span class="hljs-string">'Bye Console!'</span>);
&nbsp;&nbsp;}

&nbsp;&nbsp;<span class="hljs-title function_">hello</span>();
&nbsp;&nbsp;<span class="hljs-title function_">bye</span>();
&nbsp;&nbsp;console.timeEnd('timer');
</pre><p><strong>console.coun</strong>t → Показывает количество обращений в контексте</p><pre class="ql-syntax" spellcheck="false">&nbsp;&nbsp;<span class="hljs-variable language_">console</span>.<span class="hljs-title function_">count</span>()
&nbsp;&nbsp;<span class="hljs-keyword">for</span> (<span class="hljs-keyword">let</span> i = <span class="hljs-number">0</span>; i &lt; <span class="hljs-number">3</span>; i++) {
&nbsp;&nbsp;&nbsp;<span class="hljs-variable language_">console</span>.<span class="hljs-title function_">count</span>(i);
&nbsp;&nbsp;}
</pre><p><br></p>
    • Post Common Label
    • 2021-11-14

    Полезные функции объекта console в js

  • <blockquote>The slice() method returns a shallow copy of a portion of an array into a new array object selected from start to end (end not included) where start and end represent the index of items in that array. The original array will not be modified.</blockquote><h3>1. Создадим массив из массива начиная с n позиции в массиве. Например, мы хотим начать использовать список с 3 элемента</h3><pre class="ql-syntax" spellcheck="false"><span class="hljs-keyword">const</span> animals = [<span class="hljs-string">'ant'</span>, <span class="hljs-string">'bison'</span>, <span class="hljs-string">'camel'</span>, <span class="hljs-string">'duck'</span>, <span class="hljs-string">'elephant'</span>];

<span class="hljs-variable language_">console</span>.<span class="hljs-title function_">log</span>(animals.<span class="hljs-title function_">slice</span>(<span class="hljs-number">2</span>));
<span class="hljs-comment">// expected output: Array ["camel", "duck", "elephant"]</span>
</pre><p><span class="hljs-comment">Или, например, мы хотим взять последние 2 элемента из списка</span></p><pre class="ql-syntax" spellcheck="false"><span class="hljs-keyword">const</span> animals = [<span class="hljs-string">'ant'</span>, <span class="hljs-string">'bison'</span>, <span class="hljs-string">'camel'</span>, <span class="hljs-string">'duck'</span>, <span class="hljs-string">'elephant'</span>];

<span class="hljs-variable language_">console</span>.<span class="hljs-title function_">log</span>(animals.<span class="hljs-title function_">slice</span>(-<span class="hljs-number">2</span>));
<span class="hljs-comment">// expected output: Array ["duck", "elephant"]</span>
</pre><h3>2. Клонирование массива. Иногда нужно получить копию массива без ссылок, просто используем slice без аргументов</h3><pre class="ql-syntax" spellcheck="false">const animals = [<span class="hljs-string">'ant'</span>, <span class="hljs-string">'bison'</span>, <span class="hljs-string">'camel'</span>, <span class="hljs-string">'duck'</span>, <span class="hljs-string">'elephant'</span>];
console.log(animals.<span class="hljs-built_in">slice</span>());

// expected output: Array [<span class="hljs-string">'ant'</span>, <span class="hljs-string">'bison'</span>, <span class="hljs-string">'camel'</span>, <span class="hljs-string">'duck'</span>, <span class="hljs-string">'elephant'</span>]
</pre><p>Изменения в копии не приведут в изменении в основном массиве</p><h3>3. Преобразования массиво-подобных объектов в массив</h3><pre class="ql-syntax" spellcheck="false"><span class="hljs-keyword">function</span> <span class="hljs-title function_">argToArray</span>(){
&nbsp;<span class="hljs-keyword">return</span> <span class="hljs-title class_">Array</span>.<span class="hljs-property"><span class="hljs-keyword">prototype</span></span>.<span class="hljs-property">slice</span>.<span class="hljs-title function_">call</span>(<span class="hljs-variable language_">arguments</span>);
}

<span class="hljs-variable language_">console</span>.<span class="hljs-title function_">log</span>(<span class="hljs-title function_">aargToArray</span>(<span class="hljs-string">"1"</span>, <span class="hljs-string">"2"</span>, <span class="hljs-string">"3"</span>, <span class="hljs-string">"4"</span>));
<span class="hljs-comment">// expected output: Array ["1", "2", "3", "4"]</span>
</pre><h3>4. Преобразовать NodeList из DOM в массив</h3><pre class="ql-syntax" spellcheck="false"><span class="hljs-keyword">const</span> allDiv = <span class="hljs-variable language_">document</span>.<span class="hljs-title function_">querySelectorAll</span>(‘div’);
<span class="hljs-variable language_">console</span>.<span class="hljs-title function_">log</span>(<span class="hljs-title class_">Array</span>.<span class="hljs-property"><span class="hljs-keyword">prototype</span></span>.<span class="hljs-property">slice</span>.<span class="hljs-title function_">call</span>(allDiv));
</pre><p>expected output:</p><p><img src="/uploads/brochures/post_inner/image-61961587bd57c.png"></p><h3>5.  Заменить элемент в строке по индексу</h3><pre class="ql-syntax" spellcheck="false"><span class="hljs-title class_">String</span>.<span class="hljs-property"><span class="hljs-keyword">prototype</span></span>.<span class="hljs-property">append</span> = <span class="hljs-keyword">function</span> (<span class="hljs-params">index,value</span>) {
&nbsp;<span class="hljs-keyword">return</span> <span class="hljs-variable language_">this</span>.<span class="hljs-title function_">slice</span>(<span class="hljs-number">0</span>,index) + value + <span class="hljs-variable language_">this</span>.<span class="hljs-title function_">slice</span>(index);
};

<span class="hljs-keyword">const</span> person = <span class="hljs-string">"Captain Sparrow"</span>;
<span class="hljs-variable language_">console</span>.<span class="hljs-title function_">log</span>(person.<span class="hljs-title function_">append</span>(<span class="hljs-number">8</span>,<span class="hljs-string">"Jack "</span>));

expected <span class="hljs-attr">output</span>: <span class="hljs-title class_">String</span> <span class="hljs-title class_">Captain</span> <span class="hljs-title class_">Jack</span> <span class="hljs-title class_">Sparrow</span>
</pre><p><br></p>
    • Post Common Label
    • 2021-11-12

    5 примеров использования slice в js

  • <p>Короткая история как получить доступ к переменной php, если ее зона видимости ограничена без ReflectionMethod<span style="color: rgb(230, 0, 0);">*</span> магии.</p><blockquote><strong>public</strong> - Class members declared public can be accessed everywhere.</blockquote><blockquote><strong>protected</strong> - Class members declared protected can be accessed only within the class itself and by inheriting and parent classes.</blockquote><blockquote><strong>private</strong> - Class members declared as private may only be accessed by the class that defines the member.</blockquote><p><strong><u>Важно</u></strong>, объекты одного типа будут иметь доступ к свойствам друг друга вне зависимости от их зоны видимости даже если они инициализированы в разных местах</p><p>Создадим класс с private свойством и получим доступ к нему:</p><pre class="ql-syntax" spellcheck="false"><span class="hljs-meta">&lt;?php</span>

<span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">Test</span>
</span>{
&nbsp;&nbsp;<span class="hljs-keyword">private</span> <span class="hljs-variable">$secret</span>;
&nbsp;&nbsp;<span class="hljs-keyword">public</span> <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">__construct</span>(<span class="hljs-params"><span class="hljs-keyword">string</span> <span class="hljs-variable">$secret</span></span>)
&nbsp;&nbsp;</span>{
&nbsp;&nbsp;&nbsp;&nbsp;<span class="hljs-keyword">$this</span>-&gt;secret = <span class="hljs-variable">$secret</span>;
&nbsp;&nbsp;}
&nbsp;&nbsp;<span class="hljs-keyword">public</span> <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">access</span>(<span class="hljs-params">Test <span class="hljs-variable">$other</span></span>)
&nbsp;&nbsp;</span>{
&nbsp;&nbsp;&nbsp;&nbsp;var_dump(<span class="hljs-string">'access to private'</span>);
&nbsp;&nbsp;&nbsp;&nbsp;var_dump(<span class="hljs-variable">$other</span>-&gt;secret);
&nbsp;&nbsp;}
}

<span class="hljs-variable">$r</span> = <span class="hljs-keyword">new</span> Test(<span class="hljs-string">'init class'</span>);
<span class="hljs-variable">$r</span>-&gt;access(<span class="hljs-keyword">new</span> Test(<span class="hljs-string">'Luke, I am your father.'</span>));
<span class="hljs-comment">//expected output</span>
<span class="hljs-comment">//access</span>
<span class="hljs-comment">//Luke, I am your father.</span>
</pre><p>Как мы можем это использовать, например, поменять значение с переменной без сеттера и даже можем инициализировать класс с приватным конструктором</p><pre class="ql-syntax" spellcheck="false"><span class="hljs-meta">&lt;?php</span>

<span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">Test</span> </span>{

&nbsp;&nbsp;<span class="hljs-keyword">private</span> <span class="hljs-keyword">string</span> <span class="hljs-variable">$name</span>;

&nbsp;&nbsp;<span class="hljs-keyword">private</span> <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">__construct</span>() </span>{}

&nbsp;&nbsp;<span class="hljs-keyword">public</span> <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">getName</span>(): <span class="hljs-title">string</span> </span>{
&nbsp;&nbsp;&nbsp;&nbsp;<span class="hljs-keyword">return</span> <span class="hljs-keyword">$this</span>-&gt;name;
&nbsp;&nbsp;}

&nbsp;&nbsp;<span class="hljs-keyword">public</span> <span class="hljs-built_in">static</span> <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">setFromConfig</span>(<span class="hljs-params"><span class="hljs-keyword">array</span> <span class="hljs-variable">$row</span></span>): <span class="hljs-title">self</span> </span>{

&nbsp;&nbsp;&nbsp;&nbsp;<span class="hljs-variable">$Test</span> = <span class="hljs-keyword">new</span> Test;
&nbsp;&nbsp;&nbsp;&nbsp;<span class="hljs-variable">$Test</span>-&gt;name = <span class="hljs-variable">$row</span>[<span class="hljs-string">'name'</span>];

&nbsp;&nbsp;&nbsp;&nbsp;<span class="hljs-keyword">return</span> <span class="hljs-variable">$Test</span>;
&nbsp;&nbsp;}

}

<span class="hljs-variable">$Test</span> = Test::setFromConfig([<span class="hljs-string">'name'</span>=&gt;<span class="hljs-string">'Harry Potter'</span>]);
<span class="hljs-keyword">echo</span> <span class="hljs-variable">$Test</span>-&gt;getName();
</pre><p><br></p><p><strong>PS</strong></p><p><span style="color: rgb(230, 0, 0);">*</span>Как получить доступ к private переменной используя reflection</p><pre class="ql-syntax" spellcheck="false"><span class="hljs-meta">&lt;?php</span>

<span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">Foo</span>
</span>{
&nbsp;&nbsp;<span class="hljs-keyword">private</span> <span class="hljs-variable">$privateProperty</span> = <span class="hljs-string">'Harry Potter!'</span>;
}

<span class="hljs-variable">$method</span> = <span class="hljs-keyword">new</span> ReflectionProperty(<span class="hljs-string">'Foo'</span>, <span class="hljs-string">'privateProperty'</span>);
<span class="hljs-variable">$method</span>-&gt;setAccessible(<span class="hljs-literal">true</span>);

<span class="hljs-keyword">echo</span> <span class="hljs-variable">$method</span>-&gt;getValue(<span class="hljs-keyword">new</span> Foo);
<span class="hljs-comment">// Expected output</span>
<span class="hljs-comment">// Harry Potter!</span>
</pre>
    • Post Common Label
    • 2021-11-21

    Как получить доступ к защищенной переменной php

  • <p>НЕТ.</p>
    • FAQ
    • 2021-12-01

    Умирает ли php?

  • <p>В зависимости какой сегодня день.</p>
    • FAQ
    • 2021-12-02

    Можно ли сегодня деплоить?

  • <p>Я оставил мой mac pro 2015 на пару часов, а когда вернулся, то трекпад отказался работать нормально. Курсор работал, а вот клик по тапу пришлось включить в настройках. Это было непривычно, а просто ребут привычное поведение тачпада не вернул.</p><p>Что помогло? Перезагрузка <a href="https://en.wikipedia.org/wiki/System_Management_Controller" target="_blank">SMC</a>.</p><h2>Чтобы перезагрузить smc:</h2><ol><li>Выключаем полностью mac и ждем секунд 20.</li><li>Зажимаем кнопку питания и Ctrl + Option + Shift (удерживая их все одновременно) примерно 10 секунд.</li><li>Включаем мак как обычно.</li></ol><p>Если MacBooks 2018 или моложе (с T2 чипом), то просто зажимаем кнопку питания на 15 секунд.</p><p>После перезагрузки, привычное поведение восстановилось.</p><h3>PS.</h3><p>Чтобы каждый менялся бэкграунд новой вкладки как на скриншоте, рекомендую установить <a href="https://chrome.google.com/webstore/detail/google-arts-culture/akimgimeeoiognljlfchpbkpfbmeapkh?hl=en" target="_blank">плагин Google Arts &amp; Culture</a> для хрома, который предлагает изображение из мировой галлереи искусств.</p>
    • Post Common Label
    • 2021-12-10

    Если внезапно перестал щелкать трекпад по тапу

  • <p>Покажу пост из своего жж с обзором хостингов.</p><p><img src="/uploads/brochures/post_inner/photo-2022-02-02-22-41-27-61fae075ba047.jpg"></p>
    • Post Common Label
    • 2022-02-03

    Мой обзор бесплатных хостингов из 2007 года

  • <p>Когда у вас подключен <a href="https://plugins.jetbrains.com/plugin/9525--env-files-support" target="_blank">.env плагин</a>, а подсветка синтаксиса в .env файле не работает, нужно:</p><ol><li>Зайте в Settings -&gt; Editor -&gt; File Types</li><li>Добавить .env значение</li><li>Перезагрузить ide при желании</li></ol>
    • Post Common Label
    • 2022-06-25

    Если jetbrains ide не видит .env файлы

logo
Just texting.
logo
  • HOME
  • FAQ
  • ABOUT
Follow The White Rabbit