• Как реализовать очень быстрый REST API на php вкупе с фреймворком?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Что за шутки? Откуда цифра в 300 RPS?
    К РНР там гири привязывали, что ли?
    Какова доля РНР? Где тесты, показывающие, что бутылочное горлышко - РНР фреймворк, а не, скажем, база?
    Ответ написан
    1 комментарий
  • Как реализовать скрытие новостей из ленты у пользователя?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    У вас в колледже экзамены что ли?
    Ну вы бы, как нормальные студенты, списывали друг у друга, а не по одиночке ходили
    Как организовать удаления записей из ленты пользователя?
    Ответ написан
    1 комментарий
  • Как сделать систему добавления текста на сайт?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    livejournal
    Ответ написан
    Комментировать
  • В какую сторону копать, чтобы написать лайтовенький чат для комнат по 3 человека?

    nazarpc
    @nazarpc
    Open Source enthusiast
    WebSockets, статью недавно писал по этому поводу: habrahabr.ru/post/250085
    Но для этого нужен будет виртуальный сервер, чтобы поддерживались WebSockets.
    Ответ написан
    Комментировать
  • Как прeодолеть зону комфорта, стать фрилансером не обанкротившись?

    kumaxim
    @kumaxim
    Web-программист
    Для начал ответь сам себе на вопрос "А чем тебе неудобна текущая золотая клетка"? Можешь не писать здесь, но определись для себя.

    Далее нужно осознать, что фриланс - это подвид бизнеса. Есть книжка Р.Киосаки "Квадрант денежного потока". Там всех людей, работающих в экономике разделяют на 4 части:
    1. Р - наемные работники
    2. П - предприниматели
    3. Б - бизнес
    4. И - инвесторы

    Фриланс - это сегмент П. Ты работаешь один, возможно зарабатываешь больше чем работая по найму, но вот ты заболел, продуло тебя где-то, температура 38.5.... Сомневаюсь что ты из стали сделан и сможешь в таком состоянии писать код.
    Сегмент П очень хорошо охарактеризовал г-н Залогин из Локус Медиа. Он сказал примерно так: "Вы человек-велосипед - пока крутите педали - едите, как только перестали - упали"

    Переходя к твоему вопросу о выходе из зоны комфорта.
    Первое что рекомендую перед началом своего бизнеса - оплати все долги. Закрой ипотеку, погаси автокредит, все потребительские заемы и т.д. В случае если ты провалишься(первый блин, обычно, комом) по крайней мере ты со своей семьей не под мостом окажешься.
    Второе - содержание семьи. Никакие твои заработки не должны влиять на твою жену/ребенка. Твои родные, как минимум, должны иметь крышу над головой + еду на столе. Посчитай сколько ты платишь за комуналку + еду. Далее умножаешь эту сумму на 24 месяца. Это финансовая подушка твоей семьи.
    Третье - планирование. Бизнес без бизнес-плана - это не более чем хобби. С 16 лет стремился зарабатывать в сети. Продавал ссылки на sape.ru в 2008-2009, работал с трафиком в 2010-2012, продавал китайские безделушки с 2013-2014... Сейчас ушел в разработку одного SaaS-решения. Первые пару месяцев оптимизм из ушей хлещет, думаешь "Да все будет, да это фигня, преодалею...." Но вот начинаются черные полосы: ТИЦ сайта в планируемый апдейт не вырос до нужного значения, твой сайт на 9 месте в выдаче, вместо требуемой тебе 3-4 позиции, товар из Китая на таможне завис.... Да я могу до бесконечности перечислять проблемы, которые возникали у меня... А время - деньги: тебе нужно платить аренду, зарплату, рекламу, кредиты и т.д. Не платишь - начинается ругань, из Максима Александровича я сразу превращаюсь в мошенника, кидалу, сволочь... эх, во общем суть ты понял. Думай на 2 шага вперед, вот что я хочу сказать
    Четверное - не делай бизнес с полного нуля. Перт Осипов(проект Бизнес Молодость) в каком-то из видео говорил, что мы не ценим самое ценное что у нас есть, мы воспринимаем это как должное, когда для других людей это может быть сравни бриллианту среди кучи стекляшек. Вы не первый день работайте в ИТ по какой-то специализации, так ведите эту специализацию и дальше. Занимайтесь своим любимым делом.
    Пятое - не пытайтесь все делать сами. Когда я запустил свой самый первый интернет-магазин по Китайским безделушкам я все делал сам: рисовал дизайн, верстал его, настраивал рекламу, обзванивал клиентов, носил товар на почту.... В общем занимался вообще всем! Причем за всей этой рутиной я не видел, что мой сайт работает не эффективно, я упускаю из виду 20% горячих клиентов, 10% моих бандеролей исчезают в глубинах Почты России... Вы как первое лицо компании должны знать все процессы своего предприятия, иначе Вы не сможете им управлять, но Вам не нужно все процессы делать самому. Отдайте часть на аутсорс или делегируйте наемному сотруднику.
    Шестое - я на этом очень сильно обжегся около 3-х лет назад.... Ставьте своим сотрудникам четко достижимые KPI(ключевые показатели эффективности). Например, есть у меня форма заказ обратного звонка на сайте. Человек пишет туда своего Имя и номер телефона, после чего эти данные попадают в CRM. Для менеджеров, которые у меня обрабатывают вызовы клиентов один из KPI звучит так: перезвонить клиенту в течении 15 минут после поступления от него заявки, если она поступила в рабочее время. Причем все KPI Вы должны сформулировать максимально точно и подробно. Я сам с KPI работаю так: есть у человека базовый оклад и базовый набор KPI, которые ему необходимо выполнять. Если он их выполняет - получает оклад, выполняет лучше - получает оклад + премию. Причем оклад у меня сам небольшой, около 6 т.р., но нижняя з/п у меня примерно в 2,5 раза выше.

    Первые 4 пункта - это как мягко выйти, вторые два - как не свалиться.

    В целом о бизнесе в РФ могу сказать что его делать относительно легко. Достаточно просто делать что-то хорошо и по человечески относится к своим клиентам. Примерно за 1 год Вы нарабатываете определенную базу контактов(поставщики/партнеры/клиенты), которые Вас знают и доверяют Вам. А далее главное все это не растерять.

    Вам могут все Ваши родные/коллеги/друзья говорить "Да ты что, сейчас санкции, налоги, коррупция..." Поверьте, все это херня! Под прессом можно работать и зарабатывать, причем когда его снимут - Вы получите взрывной рост. А все эти отговорки про санкции, коррупцию, высокие налоги... Да просто у кого-то очко играет!
    Ответ написан
    14 комментариев
  • Кто использовал OpenServer в качестве сервера внутри конторы?

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

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Здравствуйте! Я скачала файл из Интернета, а он мне оказался не нужен. Как его теперь закачать обратно? (с)

    Задача какая-то бредовая, особенно в части про
    Если удалил после скачивания книгу и нет больше пользователей которые скачали книгу то удаляем user_id и книгу?

    А структура примитивная:
    таблица книг
    таблица юзеров
    таблица скачиваний вида книга_ид-юзер_ид
    Ответ написан
    Комментировать
  • Как можно пересортировать массив по моему алгоритму?

    @ollisso
    Какой алгоритм не понятен, но ключевые слова: "пересортировать массив по моему алгоритму" - это одна из 2 функций:
    php.net/uasort
    php.net/uksort

    ------------------------------------
    Если по новому ставится задача то легче сделать так:
    1. выделяете ключевые слова (продам, продаётся, продажа"
    2. выделяются вторые слова
    3. склеиваются.

    $keys  = ["Продам", "Продаётся", "Продажа"];
    $words = ["котлету", "ботинок", "семки"];
    
    $groupSize  = 3;
    $amount = sizeof($keys)*sizeof($words);
    $list = array_fill(0,$amount, "");
    foreach ($keys as $group => $groupName) {
        foreach ($words as $item => $word) {
    
            $index = (($group+$item) * $groupSize + $group)%$amount;
    
            $list[$index] = $groupName . ' ' . $word;
    
    
        }
    
    }
    
    print_r($list);


    Или, если вы хотите по частям, то например так:

    /** Создаём список. важно что он имеет строгий формат */
    $keys  = ["Продам", "Продаётся", "Продажа"];
    $words = ["котлету", "ботинок", "семки"];
    
    $list = [];
    foreach ($words as $wordId => $word) {
        foreach ($keys as $groupId => $groupName) {
            $list[] = $groupName . ' ' . $word;
        }
    }
    // сортируем
    $groupSize  = 3;
    $output = array_fill(0, sizeof($list), "");
    
    foreach ($list as $id => $string) {
        $group = floor($id/$groupSize);
        $item = $id%$groupSize;
        $index = (($group+$item) * $groupSize + $item)%sizeof($list);
        $output[$index] = $string;
    
    }
    
    print_r($output);
    Ответ написан
    8 комментариев
  • GD и CRON, как решить?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    1. перед тем, как засунуть программу в крон, логично попробовать ее запустить руками в консоли.
    2. первой строчкой в кронтабе пишешь
    mailto=tvoi@email

    Картинка сохраняется рядом со скриптом на хостинге. В чём может быть загвоздка?

    Скорее всего в том, что ты не понимаешь принцип "текущего каталога". И не используешь абсолютные пути
    Ответ написан
    4 комментария
  • Как правильно проверять переменную в php?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Аналогом
    if ($var)
    для случая, когда переменная может быть не инициализирована, является
    if (!empty($var))

    Тем не менее, следует учесть замечание OnYourLips, и делать так, чтобы переменные, источником которых является твой скрипт, всегда были определены.

    Update.
    Мда. Полез поискать тебе ответ для случая, когда 0 считается не пустым значением.

    Если бы тогда пассажир по фамилии KorsaR-ZN написал тебе не феерически бредовую отсебятину,
    empty - проверят именно на пустоту переменной, т.е возвращает true если переменная является пустой и false в противоположном случаи.

    а объяснил, что
    !empty($var)
    всего-навсего является короткой записью
    if (isset($var) && $var))
    то сейчас у тебя вопроса не возникло бы.

    Это к вопросу о том, почему давать плохие ответы плохо (для автора) но хорошо (для посещаемости). И объясняет, почему администрация специально разводит на сайте лохов.
    Ответ написан
  • OS для web разработчика, какая?

    @worlxxaker
    Просто мировой хакер, и все.
    linux, всегда и везде только он родимый
    Ответ написан
    Комментировать
  • OS для web разработчика, какая?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    frontend - Mac OS
    backend - linux
    qa - windows
    Ответ написан
    5 комментариев
  • Как правильно писать запросы для поиска по базе (MySQL) и не ронять сервер?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Дополню предыдущий ответ несколькими замечаниями.

    Во-первых, сам запрос
    SELECT m.* FROM genre g, music_genre mg,  music m
    WHERE g.name = 'trance' AND mg.genre_id=g.id AND m.id=mg.music_id

    Во-вторых, никаких mysql_query, только PDO. Код должен выглядеть так:
    $sql = "SELECT m.* FROM genre g, music_genre mg,  music m
    WHERE g.name = ? AND mg.genre_id=g.id AND m.id=mg.music_id";
    $stmt = $pdo->prepare($sql);
    $stmt->execute([$search]);
    $allmusic = $stmt->fetchAll();

    В-третьих, обе колонки в music_genre должны быть проиндексированы. или даже так - два индекса, один из которых "music_id, genre_id", а второй - "genre_id, music_id"
    Ну и на genre.name тоже можно повесить, уникальный
    Ответ написан
    7 комментариев
  • Как правильно писать запросы для поиска по базе (MySQL) и не ронять сервер?

    DmitriyEntelis
    @DmitriyEntelis
    Думаю за деньги
    Почитайте про реляционные базы вообще и про третью нормальную форму в частности.
    Не нужно хранить жанр музыки строкой для каждой композиции.
    Заводим отдельную табличку
    genre
    ---
    genre_id
    genre_title

    Заводим табличку для указания соответствий
    xref_music_genre
    ---
    music_id
    genre_id

    Все.

    UPD
    Если человек вводит запрос вида: "trance and house", то как правильно делать в таком случае выборку, чтобы в результате были выведены все треки, в жанрах которых встречаются слова из этого запроса? В данном случае должны вывестись все треки из жанра house и trance.

    select music_id 
    from xref_music_genre 
    where genre_id IN (5,7) 
    group by music_id 
    HAVING count(genre_id)=2
    Ответ написан
  • Как запретить повторный запуск скрипта?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Зачем вам вообще открывать этот файл?
    Используйте locker как флаг, что если файл вообще есть - значит экземпляр скрипта запущен.

    Логика такая:
    1. Проверить есть ли файл.
    1.1 Прочитать его (получить PID), проверить есть ли процесс с этим PID.
    1.2 Если есть - значит один экземпляр скрипта запущен, и мы завершаемся.
    2. Если нет - создаем файл,
    2.1 пишем в него PID Текущего процесса
    1.2 выполняем скрипт.
    3. Удаляем файл.

    А эти flock - вообще лишняя хрень.
    Ответ написан
    2 комментария
  • Php авторизация пользователя. Что есть best practices?

    Вам нужно использовать сессии. Вместо того чтобы каждый раз присылать login, и pass - пусть лучше клиент шлет token сессии. Если использовать нативную реализацию сессии - то id сессии присылается в cookie. Можно использовать самописный механизм, в таком случае клиенту всегда нужно будет слать token.
    По-сути всё это практически то же самое что и в каждом запросе присылать логин/пароль. Но мне в своей практике не доводилось встречать реализацию с отсылкой логина и пароля при каждом запросе. Поэтому смею предположить что никто так не делает :) Используйте токен, и тогда клиентам не придется светить логин/пароль при каждом запросе :)
    Ответ написан
    5 комментариев
  • Лучшая cms для интернет-магазина, быстро работающая?

    voronkovich
    @voronkovich
    Ответ написан
    Комментировать
  • Зачем хешировать строку для cookies при авторизации?

    mcdb
    @mcdb
    То ли программист, то ли видение...
    Абсолютно бессмысленная трата ресурсов. Её даже в куки класть не нужно. Храните в куке только идентификатор пользователя. Если он там есть - значит пользователь зашел на сайт и всё хорошо.
    Ведь никто не подберёт постоянный идентификатор пользователя, это ж не какой-то там ненужный бессмысленный хэш генерируемый при каждом логине.
    Ответ написан
    6 комментариев
  • Есть ли альтернатива PHP?

    DmitriyEntelis
    @DmitriyEntelis
    Думаю за деньги
    Основная претензия к PHP - огромное количество школьников которые прочитали полторы статьи, посмотрели 3 видео курса, собрали бложег на вордпресс и считают себя программистами.
    Есть некоторые шероховатости и нелогичности, но с каждым релизом их меньше и меньше.
    Я не вижу каких то принципиальных преимуществ у других скриптовых языков.
    Ответ написан
    1 комментарий