• Git как вернуть отмененный коммит?

    @sergiodev
    Найдите хэш нужного коммита в `git reflog` и скопируйте его через `git cherry-pick`
    Ответ написан
    Комментировать
  • Стоит ли строить локальную сеть на базе коаксильного телевизионного кабеля?

    gbg
    @gbg Куратор тега Компьютерные сети
    Любые ответы на любые вопросы
    1. Скорость будет зависеть от качества прокладки кабеля и разветвителей. Если в разветвителях есть какой-то креатив типа усилителей, фильтров, и так далее, скорость упадет. Более того, любое соединения кабеля - это источник отражения сигналов. Больше отражений - хуже связь.

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

    3. ТВ кабель имеет волновое сопротивление 75 Ом. Сетевые устройства могут быть и на 50 Ом. Перепутывание сопротивлений ухудшает связь вплоть до полной невозможности.

    4. При использовании общей шины, вы получите неполный дуплекс (передача данных только в одну сторону) причем в один момент времени, вещать на шину сможет только одно устройство. При совместном использовании сети, будут постоянные коллизии пакетов и низкая скорость, как следствие. Онлайн игры в неполном дуплексе будут работать плохо.

    Короче, все эти мероприятия попадают в разряд в лучшем случае, интересных технических авантюр. Хотите хорошую связь - тяните кабели Ethernet, ставьте коммутатор и так далее.
    Ответ написан
    10 комментариев
  • Как нормально реализовать классы в PHP?

    @Akela_wolf
    Extreme Programmer
    Начну с самого главного: создав такую иерархию наследования вы написали Language является SQLite3
    Really? Собственно из этого решения в дальнейшем будут торчать все возможные проблемы, парочка невозможных и одна невероятная.

    Не злоупотребляйте наследованием. В данном случае правильное решение - композиция.
    Ответ написан
    7 комментариев
  • Мало памяти на компьютере. Что делать?

    Adamos
    @Adamos
    На эти нетбуки нормально встает Линукс. На некоторые даже предустанавливался.
    И место не сжирает, что характерно, и те же задачи серфинга и киношек нормально решает (а ничего более серьезного на этом барахле все равно не поделаешь).
    Один раз поставил - и забыл всю эту головную боль с пропадающим местом и его постоянной чисткой.
    Ответ написан
  • Как можно реализовать пагинацию в Java, в том случае, когда данные для фильтрации должны браться из двух разных микросервисов?

    @Akela_wolf
    Extreme Programmer
    1. Подумать - что это за странное разбиение на микросервисы, которые оперируют связанными данными? Возможно тут что-то не так (и сильно не так)
    2. Подумать - не стоит ли данные денормализовать и сдублировать данные о пользователе (или работе) в какой-то из двух микросервисов.
    3. Выгребать все данные без фильтрации и делать фильтрацию и пагинацию уже на сервисе-потребителе. Но тут все зависит от объема данных. Если там десятки-сотни мегабайт - это окажется очень грустно.

    Но лично я бы в первую очередь заподозрил необходимость рефакторинга. И, возможно, слияния этих микросервисов.
    Ответ написан
    Комментировать
  • Можно ли хранить данные не в БД, а в JSON файле?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега PHP
    Можно, но это будет очень глупо, особенно по причине "снизить нагрузку на БД". Не переживайте, пупок у СУБД не развяжется от ваших пяти посетителей в месяц, просматривающих семнадцать товаров. Он не развяжется даже при объёмах на пять порядков больших.
    Плюсов у такого подхода примерно ноль в обычных проектах, а минусы - всё остальное.
    Ответ написан
    5 комментариев
  • Какие есть книги по расчёту оборудования под инфраструктуру сайта?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Во первых, в связи с быстроменяющимися технологиями такие книги устаревали бы к моменту выхода, так как верстка и написание их занимала бы больше времени чем время между анонсами нового серверного железа.

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

    В третьих - профиль нагрузки у очень похожих приложений может сильно отличаться, в силу специфики приложения.

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

    Как с этим жить?
    Нагрузочное тестирование на спектре нагрузок, аппроксимация роста нагрузки с ростом операций, расчет от текущего железа вверх согласно предсказанному росту нагрузки. Пока ничего умнее не придумали.
    Ответ написан
    Комментировать
  • Какие есть книги по расчёту оборудования под инфраструктуру сайта?

    Sanes
    @Sanes
    Нет таких и быть не может. Такие вещи решаются опытным путём на месте.
    Ответ написан
    2 комментария
  • Оригинальный Windows XP на современный компьютер?

    CityCat4
    @CityCat4
    Внимание! Изменился адрес почты!
    Нет, потому что lenovo ideapad - это не компьютер. Это ноутбук. А с ноутами были проблемы даже в те времена, когда хрюня была в активной разработке, а сейчас там просто половина устройств работать не будет.
    wifi, сеть, тачпад, батарейка - все мимо.

    Если нужна хрюня - ставьте на VB
    Ответ написан
    Комментировать
  • Как отнять в php одно время от другого, если изначально значения времени являются строками?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    print DateTime::createFromFormat('H:i', '15:00')
        ->diff(DateTime::createFromFormat('H:i', '14:30'))
        ->format('%H:%i');
    // 00:30
    Ответ написан
    Комментировать
  • PHP компилятор работает нативно в Visual Studio Code или нужно докачивать что-то?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    PHP работает безо всяких компиляторов, это интерпретируемый язык.
    Ответ написан
    Комментировать
  • Насколько резонно подключать библиотеки для таких вещей как модалка, маски и тд?

    Igor_307
    @Igor_307
    Фрилансер
    Все нужно плясать от того насколько процентов используется функционал этого готового решения. На примере той же модалки, если от нее использовать только показать блок, то можно обойтись и без него.
    В любом случае чем меньше размер вашего js тем более лучшие показатели CWV от сайта можно получить
    Ответ написан
    Комментировать
  • Как создать gitignore файл на маке при выгрузке проекта на gitHub?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    Файл .gitignore создают не при отправке готовой работы во внешний репозиторий, а задолго до того. Желательно даже вообще до создания первого локального коммита. Это обычный текстовый файл и он создаётся как и любой другой файл с кодом. Мак тут ничем не отличается от винды или линукса. Разве что Finder не показывает имена начинающиеся с точки. Если нажать command + shift + ., то увидишь скрытые файлы. Но мы всё равно создаём файлы в текстовом редакторе или в IDE, а не в проводнике. И редактор и Git этот файл видят в любом случае.
    Ответ написан
    2 комментария
  • Как сказать процессору "выполни это"?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Как сказать процессору «выполни это»?

    Превратить это в бинарник для начала и посмотреть, что там. Это можно (было бы) сделать командой xxd -r dump, но в твоём дампе странный порядок байтов в словах. Можно сначала перевернуть байты, а потом прогнать через xxd:
    sed 's/\([^ ]*\)/\1/;s/ \(..\)\(..\)/ \2\1/g' < dump | xxd -r > bin
    . Прогнав полученный код через дизассемблер можно понять (по переходу к адресу 0x7c05), что это код для бут-сектора:
    $ objdump -b binary -m i8086 -D bin        
    
    bin1:     file format binary
    
    Disassembly of section .data:
    
    00000000 <.data>:
       0:   ea 05 7c 00 00          ljmp   $0x0,$0x7c05
       5:   31 c0                   xor    %ax,%ax
    ...

    Дальше можно записать этот код в образ диска и попытаться загрузиться с него:
    $ head -c 254 /dev/zero >> bin
    $ printf "\x55\xaa" >> bin
    $ qemu-system-i386 -hda bin -d in_asm,exec -D log

    Поискав в созданном логе адрес 7c00 можно увидеть, что код делает при выполнении:
    ----------------
    IN:
    0x00007c00:  ea 05 7c 00 00           ljmpw    $0x0:$0x7c05
    
    Trace 0: 0x7f7a98164f00 [00000000/00007c00/0x40]
    ----------------
    IN:
    0x00007c05:  31 c0                    xorw     %ax, %ax
    0x00007c07:  8e d8                    movw     %ax, %ds
    0x00007c09:  8e d0                    movw     %ax, %ss
    
    Trace 0: 0x7f7a98165040 [00000000/00007c05/0x40]
    ----------------
    IN:
    0x00007c0b:  bc 00 7c                 movw     $0x7c00, %sp
    
    Trace 0: 0x7f7a98165180 [00000000/00007c0b/0x48]
    ----------------
    IN:
    0x00007c0e:  88 16 db 7c              movb     %dl, 0x7cdb
    0x00007c12:  31 c0                    xorw     %ax, %ax
    0x00007c14:  8e c0                    movw     %ax, %es
    0x00007c16:  bb 00 80                 movw     $0x8000, %bx
    0x00007c19:  8a 16 db 7c              movb     0x7cdb, %dl
    0x00007c1d:  b6 00                    movb     $0, %dh
    0x00007c1f:  b1 02                    movb     $2, %cl
    0x00007c21:  b5 00                    movb     $0, %ch
    0x00007c23:  b0 30                    movb     $0x30, %al
    0x00007c25:  e8 53 00                 callw    0x7c7b
    
    Trace 0: 0x7f7a98165280 [00000000/00007c0e/0x40]
    ----------------
    IN:
    0x00007c7b:  b4 02                    movb     $2, %ah
    0x00007c7d:  cd 13                    int      $0x13

    -- он хочет загрузить 48 секторов начиная со второго с текущего диска в память по адресу 0x8000, потом делает какую-то скучную фигню, а потом…
    ----------------
    IN:
    0x00007c2f:  fa                       cli
    0x00007c30:  0f 01 16 f4 7c           lgdtw    0x7cf4
    0x00007c35:  0f 20 c0                 movl     %cr0, %eax
    0x00007c38:  66 83 c8 01              orl      $1, %eax
    0x00007c3c:  0f 22 c0                 movl     %eax, %cr0
    
    Linking TBs 0x7f7a98167580 [00007c2b] index 0 -> 0x7f7a981676c0 [00007c2f]
    Trace 0: 0x7f7a981676c0 [00000000/00007c2f/0x40]
    ----------------
    IN:
    0x00007c3f:  ea 44 7c 08 00           ljmpw    $0x8:$0x7c44
    
    Trace 0: 0x7f7a981678c0 [00000000/00007c3f/0xc0]
    ----------------
    IN:
    0x00007c44:  66 b8 10 00              movw     $0x10, %ax
    0x00007c48:  8e d8                    movl     %eax, %ds
    
    Trace 0: 0x7f7a98167a00 [00000000/00007c44/0x90]
    ----------------
    IN:
    0x00007c4a:  8e c0                    movl     %eax, %es
    
    Trace 0: 0x7f7a98167b40 [00000000/00007c4a/0x90]
    ----------------
    IN:
    0x00007c4c:  8e e0                    movl     %eax, %fs
    0x00007c4e:  8e e8                    movl     %eax, %gs
    0x00007c50:  8e d0                    movl     %eax, %ss
    
    Trace 0: 0x7f7a98167c80 [00000000/00007c4c/0x90]
    ----------------
    IN:
    0x00007c52:  bc 00 c0 07 00           movl     $0x7c000, %esp
    
    Trace 0: 0x7f7a98167dc0 [00000000/00007c52/0xb8]
    ----------------
    IN:
    0x00007c57:  e8 a4 03 00 00           calll    0x8000

    …переключается в защищённый режим и вызывает только что загруженный код.

    как например запихнуть это в exe файл?

    в exe-файл это запихнуть можно, но в таком виде как есть -- это бесполезно, потому что этот код привязан к абсолютным адресам.
    Ответ написан
    Комментировать
  • Как правильно связать php сайт с mysql?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    На частные вопросы ответили в комментариях, поэтому ответим на вопрос из заголовка.

    Чтобы соединить сайт с mysql, в РНР вообще-то есть два API - mysqli и PDO. Несколько лет назад с mysqli вообще невозможно было нормально работать, но на данный момент они выровнялись, хотя PDO все равно удобнее, по трем причинам
    1. Единый интерфейс при работе с различными СУБД (неактуально, если mysql для нас является синонимом слова база данных)
    2. Набор функций-хелперов для получения данных из БД в различных форматах (при желании легко воспроизводится вручную)
    3. Именованные плейсхолдеры (для некоторых это главная причина использовать PDO)

    Но в целом, как я говорил выше, сейчас можно использовать любое API. Главное - не использовать тот древний говнокод, который приведён в вопросе.

    1. Создаём файл`config.sample.php` куда кладем все настройки приложения, в том числе базы данных
    return [
    	'db' => [
    		'host' => '127.0.0.1',
    		'username' => '',
    		'password' => '',
    		'dbname' => '',
    		'port' => 3306,
    		'charset' => 'utf8mb4',
    	],
    ];

    2. В файле, который включается во все скрипты сайта, добавляем код
    if (!file_exists('config.php'))
    {
    	throw new \Exception('Create config.php based on config.sample.php');
    }
    $config = require 'config.php';

    3. И дальше в этом же файле пишем собственно нормальный код подключения к БД
    либо к mysqli
    // включаем режим информирования об ошибках
    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    // подключаемся к серверу
    $dbc = $config['db'];
    $db = new \mysqli($dbc['host'], $dbc['username'], $dbc['password'], $dbc['dbname'], $dbc['port']);
    // не забываем установить кодировку, чтобы не было ошибок с кракозябрами
    $db->set_charset($dbc['charset']);

    либо к PDO
    $options = [
        \PDO::ATTR_ERRMODE            => \PDO::ERRMODE_EXCEPTION,
        \PDO::ATTR_DEFAULT_FETCH_MODE => \PDO::FETCH_ASSOC,
        \PDO::ATTR_EMULATE_PREPARES   => false,
    ];
    $dbc = $config['db'];
    $dsn = "mysql:host=$dbc[host];dbname=$dbc[dbname];charset=$dbc[charset];port=$dbc[port]";
    $pdo = new \PDO($dsn, $dbc['username'], $dbc['password'], $options);

    После того как будет освоена работа с системой контроля версий (а по-хорошему это надо было сделать уже давно) добавляем config.php в файл .gitignore
    Таким образом на каждом хосте, где исполняется этот код, будет собственный файл с настройками, создаваемый по образцу из config.sample.php

    Да, и Очень Важное Дополнение:
    почему нельзя сделать 1 соединение для сайта и не тратить каждый раз время на коннект к БД?

    Никогда не следует переживать по поводу воображаемых проблем. Вот только когда создание коннекта каждый раз станет реальной проблемой, только тогда и начинать переживать по этому поводу и искать пути решения (спойлер: никогда).
    Ответ написан
    14 комментариев
  • Как правильно клонировать приватный репозиторий github?

    @Drno
    Почему люди которые пишут софт, не могут просто прочитать ошибку...
    Ответ написан
    Комментировать
  • Каким образом создание новых экземпляров класса тормозит работу браузера на примере слайдера?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега JavaScript
    С чем это связано?
    С тем, что рендеринг элементов не бесплатный.

    Как с этим бороться?
    Инициализировать 5, а не 50. Остальные - по явному запросу пользователя, выгружая при этом из памяти старые ненужные.
    Ответ написан
    Комментировать
  • Как удалить первое слово?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    $str = 'Toster классный сайт';
    $final_str = count(explode(' ',$str,2))>1?explode(' ',$str,2)[1]:'';
    var_dump($final_str);
    Ответ написан
    Комментировать