• Почему не работает простенький запрос mySQL?

    Arris
    @Arris
    Сапиенсы учатся, играя.
    Потому что varchar - это строка, а не массив значений.

    вам нужно сначала разбить значения поля types на массив значений, а потом уже искать среди них. Штатного аналога explode() вроде бы нет.

    Посмотрите: https://stackoverflow.com/a/5928675/5127037
    CREATE FUNCTION SPLIT_STRING(str VARCHAR(255), delim VARCHAR(12), pos INT)
    RETURNS VARCHAR(255)
    RETURN REPLACE(SUBSTRING(SUBSTRING_INDEX(str, delim, pos),
           LENGTH(SUBSTRING_INDEX(str, delim, pos-1)) + 1),
           delim, '');


    Ну дальше уже что-нибудь в духе
    SELECT * FROM test WHERE 17 in ( SELECT SPLIT_STRING(test.types, ',' , 1) )
    Ответ написан
  • Как создать портфолио для фриланса или удаленки?

    Arris
    @Arris
    Сапиенсы учатся, играя.
    В данном случае: забить на веб-фриланс (и вебдев вообще) как основной источник дохода и пойти работать... курьером, на завод, дворником, в конце концов.

    А потом, когда не будет стоять задачи - килограмм мяса или месяц интернета - уже можно думать о вечном.
    Ответ написан
    Комментировать
  • WIKI - один движок-бэкэнд, несколько фронтэндов - как?

    Arris
    @Arris Автор вопроса
    Сапиенсы учатся, играя.
    Ваши поддомены - это отдельные папки (виртуальных хостов), так?

    Допустим, файлы движка у вас лежат в /var/www/host1/core/, а конфиги сайта (подключение к БД и прочее) в /var/www/host1/config

    Перекладываем код движка куда-нибудь в /var/www/my_engine_core/ и создаем символьные ссылки

    Если мне не изменяет память, должно быть что-то вроде

    ln -s -T /var/www/my_engine_core/ /var/www/host1/core/
    ln -s -T /var/www/my_engine_core/ /var/www/host2/core/

    etc

    Ну конечно еще надо права доступа правильно настроить, владельцев папок и так далее.
    Ответ написан
    Комментировать
  • Как в PHP реализовать схему: несколько поддоменов - один движок - к каждому поддомену своя база данных?

    Arris
    @Arris
    Сапиенсы учатся, играя.
    Ваши поддомены - это отдельные папки (виртуальных хостов), так?

    Допустим, файлы движка у вас лежат в /var/www/host1/core/, а конфиги сайта (подключение к БД и прочее) в /var/www/host1/config

    Перекладываем код движка куда-нибудь в /var/www/my_engine_core/ и создаем символьные ссылки

    Если мне не изменяет память, должно быть что-то вроде

    ln -s -T /var/www/my_engine_core/ /var/www/host1/core/
    ln -s -T /var/www/my_engine_core/ /var/www/host2/core/

    etc

    Ну конечно еще надо права доступа правильно настроить, владельцев папок и так далее.
    Ответ написан
  • Сжатие данных типа lz5, кому может быть надо?

    Arris
    @Arris
    Сапиенсы учатся, играя.
    То есть вы хотите взять код под открытой лицензией, изменить в нём пару строк и потом его продать?

    Совесть? Нет, не слышали.
    Ответ написан
    4 комментария
  • Как лучше организовать построение карт с более 1000 точек?

    Arris
    @Arris
    Сапиенсы учатся, играя.
    Разницы между "брать из файла" и "брать и базы" по скорости не будет. Из базы может быть даже будет быстрее.

    Но на самом деле вам нужна Редиска.
    Ответ написан
    4 комментария
  • Скорость записи в бд?

    Arris
    @Arris
    Сапиенсы учатся, играя.
    Комментировать
  • Как отключить для сайта всплывающие ссылки в браузере?

    Arris
    @Arris
    Сапиенсы учатся, играя.
    Если мне память не изменяет, когда-то давно это поведение можно было задать при помощи

    window.status = '';
    
    // к примеру
    <a href="x.html" onmouseover="window.status='YYYYY'">Xxxxxxxxxxxxxxxxxx</a>

    Но, как пишут тут: https://www.w3schools.com/jsref/prop_win_status.asp это давным давно не работает в современных браузерах (уже в IE7 отменено).

    Поэтому остается вариант от Андрей Федоров
    Ответ написан
    2 комментария
  • Как лучше хранить данные о пользователе (Mysql)?

    Arris
    @Arris
    Сапиенсы учатся, играя.
    Вы хотите на каждого пользователя заводить отдельную табличку в БД? Вы знаете, это безусловно WIN. Дерзайте, мы в вас верим.

    По делу: https://github.com/PHPAuth/PHPAuth
    Ответ написан
    Комментировать
  • Как спарсить utm-метки в переменные?

    Arris
    @Arris
    Сапиенсы учатся, играя.
    Передаваемая в each функция - callback, который будет вызываться для каждого элемента коллекции, и в который будут передаваться два параметра - индекс и значение элемента в коллекции.

    Это у вас первая ошибка.
    А вторая ошибка - из замыкания $(z).each(function(){})); ничего не возвращается. То есть функция сама по себе результат возвращает, но он нигде не сохраняется.

    Я сделал так:
    var utmName = function(utmName) {
                    var result = '';
                    $(z).each(function(index){
                        if (z[index][0] == utmName) {
                            result = z[index][1];
                        }
                    });
                    return result;
                }

    Это работает, но я не уверен, что это абсолютно синтаксически корректно.
    Ответ написан
    2 комментария
  • Почему phpQuery теряет php-вставки при парсинге?

    Arris
    @Arris
    Сапиенсы учатся, играя.
    photosho: вы что парсите-то? Файлы на сервере "изнутри" или ответ сервера "снаружи"?

    Если второе - забудьте, не получите вы никаких "пхп-вставок", вы получите результат работы php-скриптов. А если админ допустил появление на веб-страницах "пхп-вставок" в виде текста (и это НЕ примеры) - ему надо руки оторвать.
    Ответ написан
  • Ухудшается ли качество трека?

    Arris
    @Arris
    Сапиенсы учатся, играя.
    Разрезать:
    ffmpeg -i <input file> -ss <Start position> -to <End position> -c:v copy -c:a copy <out_file>

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

    Склеить тоже можно, команду наизусть не помню, все есть в той же справке :)
    Ответ написан
    Комментировать
  • Почему "innerHTML" не работает в jquery?

    Arris
    @Arris
    Сапиенсы учатся, играя.
    Дело в том, что
    $("#id") и getElementById("id") возвращают совершенно разные структуры.
    Вы сами можете проверить в консоли этой страницы, к примеру с айдишником clarify_link_436984.

    Первая возвращает объект jQuery:
    Object { 0: <a#clarify_link_436984.btn.btn_link.btn_comments-toggle>, length: 1, context: HTMLDocument → 436984, selector: "#clarify_link_436984" }


    Вторая - (не уверен в точности формулировки: ссылку DOM-элемент)
    <a class="btn btn_link btn_comments-toggle" href="javascript:void(0)" id="clarify_link_436984" title="Написать комментарий" role="toggle_question_comments">


    В экземпляре, возвращаемом первой инструкцией, метод innerHTML не определен. Для этого в jQuery есть другие методы, работающие не с DOM-деревом напрямую, а с его представлением внутри jQuery (гуру фронтэнда, поправьте меня, если я не прав).

    В общем, резюмируя: не путайте инструменты ;-)
    Ответ написан
  • Насколько легко трудоустроиться программисту в 40+, 50+ итд лет?

    Arris
    @Arris
    Сапиенсы учатся, играя.
    Трудно - и с каждым годом будет все сложнее и хуже. С каждым годом растет объем пула "минимально-необходимых для программиста компетенций" . Каждый год появляются какие-то новые фреймворки, инструменты, фишки - которые по идее должны облегчать и упрощать разработку - но на деле вырастают непреодолимой стеной между тобой и "реальным миром веб-разработки". Потому что ты стареешь, а технологии молодеют.

    Я бы картинку нарисовал, но там очень уж нецензурный вид получается ;-)

    И "впихнуть" в себя все новые технологии ну не получается никак - ты или распыляешься и все знаешь по верхам... или идешь вглубь темы. Но тогда приходится откладывать новые технологии в сторону, потому что на них тупо не хватает времени и/или сил. В молодости - времени. Позже - сил.

    Уже сейчас чтобы тебя считали верстальщиком/программистом/фронтэндером/бэкэндером - надо знать в 2 раза больше технологий, чем 2 года назад. Этакий Закон Мура наоборот. Да вы сами просто посмотрите эти списки "компетенций"!

    Читаешь список требований к "Web-программистам" и видишь, что месяц за месяцем, год за годом HR-ы и те, кто там им задачи ставит, вписывают в требования все больше умных словечек, которые они сами услышали и не понимают, зачем оно им нужно и нужно ли? Все ближе и ближе ситуация подходит к "Если бы водителей принимали на работу как програм.... В 2010 году это была "шутка юмора". Сейчас это уже почти реальность.

    Пример хотите?

    Одна государственная организация выставила список требований к "веб-программисту". При зарплате в 35000 рублей он должен уметь чуть ли не МКС программировать и чуть ли не кластера из сотен серверов настраивать. А на деле основной задачей человека будет - таскать проекторы из аудитории в аудиторию, чистить мышки студентам, переставлять winxp и изредка, раз в полгода - добавлять статью на сайт гос.организации. Откуда информация? Связался с человеком, которому 45, который в этой организации работает уже 18 лет. Ему стаж капает, а деньги он зарабатывает совсем в другом месте.


    Что уж говорить об организациях коммерческих? Особенно тех, для которых веб-программист - и чтец, и жнец, и на дуде игрец?

    Но это все лирика и крик души. Извините.

    И да, к 35-40-45 годам по мнению "молодых и амбициозных IT-специалистов" ты должен обладать строго определенным списком компетенций как в профессии, так и по жизни (к примеру, я столнулся с отказом в приеме на позицию программиста потому что у меня нет... автомобиля. Зачем программисту автомобиль? Ну там сложная и длинная логическая цепочка, сводящася к "раз у тебя нет автомобиля - ты лох, а лохи нам не нужны").
    Мне кажется, проблема в том числе и в том, что подавляющее большинство этих самых "молодых и амбициозных" специалистов совершенно не думают о своем будущем. Нет, я не про то будущее, которое "куда я пойду, когда закончу вот этот крутой проект". Я о реальности. В их понимании 35 лет - это недостижимо далёкое будущее, а до 50 они не доживут (а если и доживут - то в мечтах тимлидами в гугле).

    Соответственно "молодые и амбициозные специалисты" с презрением смотрят на людей, которые отдали 15 лет разработке определенной платформы, платформы, которую сейчас тщится заменить какой-то пул новых технологий. По их мнению - все что старше 5 лет - ненужное устаревшее говно мамонта. А те, кто не знают появившуюся полгода назад технологию - отставшие от жизни ламеры.
    Also, Эффект Даннинга—Крюгера тут работает в полную силу.

    Резюмирую: трудно, если у тебя нет в резюме стапятисот сделанных проектов. И чем дальше - тем сложнее и труднее будет. Но тебе может повезти - если ты компетентный специалист в узкой области (даже если она 'legacy'). Или ты можешь найти синекуру - гос.организацию, в которой ты присоединишься к когорте таких же скинутых с паровоза прогресса "молодыми и амбициозными". Не переживай, через 20 лет скинут их. А ты останешься.

    Вот только кушать хочется сейчас. Хотя бы просто хлебушка.
    Ответ написан
    23 комментария
  • Как в InnoDB сделать так, чтоб после удаления строки она реально удалялась с диска?

    Arris
    @Arris
    Сапиенсы учатся, играя.
    OPTIMIZE TABLE `xxx`; ?

    Да, я знаю, что оптимайз не поддерживается InnoDB :)
    Но в консоли mysql пишет:
    Table does not support optimize, doing recreate + analyze instead

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

    P.S. Да, я правильно понимаю логику. Я проверил ;-)
    Ответ написан
    Комментировать
  • Как удалить последнее слово?

    Arris
    @Arris
    Сапиенсы учатся, играя.
    Способ быстрее: обратно собирать не через цикл, а через implode()
    Ответ написан
    1 комментарий
  • Как правильно сделать сессии и авторизацию на PHP?

    Arris
    @Arris
    Сапиенсы учатся, играя.
    Посмотрите в сторону PHPAuth : https://github.com/PHPAuth/PHPAuth
    Ответ написан
    Комментировать
  • Двухуровневый индекс sitemap-а -- возможен ли?

    Arris
    @Arris Автор вопроса
    Сапиенсы учатся, играя.
    Запостил на стековерфлоу:

    stackoverflow.com/questions/37215727/multi-tiered-...
    Ответ написан
    Комментировать
  • Какой из запросов mysql быстрее?

    Arris
    @Arris
    Сапиенсы учатся, играя.
    Делайте

    select * from posts limit 20 offset 20

    и не парьтесь. На таблице новостей разницы нет.

    Далее, я не знаю каким маньяком нужно быть, чтобы прокрутить новости до двухтысячной :)

    Есть более оптимальное решение, есть. Закэшировать айдишники новостей для каждой страницы. Но в вашем случае это оверхед.
    Ответ написан
    Комментировать
  • MySQL: information_scheme - как вывести NULL для несуществующих таблиц?

    Arris
    @Arris Автор вопроса
    Сапиенсы учатся, играя.
    На Stackoverflow предложили решение. Недостаточно корректное, но хоть какое-то:

    SELECT tn.table_name, t.table_rows, t.data_length, t.update_time
    FROM (SELECT 'table_1' as table_name UNION ALL
          SELECT 'table_2' as table_name UNION ALL
          SELECT 'table_3' as table_name UNION ALL
          SELECT 'table_4' as table_name
         ) tn LEFT JOIN
         information_schema.tables t
         ON tn.table_name = t.table_name;
    Ответ написан
    Комментировать