• Можно ли сохранить последовательность вывода полей?

    @alexalexes
    Все таки сделайте динамически формируемым данные об интервалах, то есть inters можно представить в виде таблицы или генерировать на основе prepod.
    Для "нет данных" можно определить интервал [null, null]:
    select case
             when a.begin is null and a.end is null then 'нет данных'
             when a.begin is not null and a.end is not null then concat(a.end, '-', a.begin)
             when a.begin is null and a.end is not null then concat('ранее ', a.end + 1)
             when a.begin is not null and a.end is null then concat('от ', a.begin)
           end interval_str,
           cnt
    from
    (
    select inters.begin, inters.end, count(prepod.name) cnt
    from
    (
      select null begin, 1969 end union all
      select 1970 begin, 1979 end union all
      select 1980 begin, 1989 end union all
      select 1990 begin, 1999 end union all
      select 2000 begin, null end union all
      select null begin, null end -- запись для тех, у кого нет данных др.
    ) inters -- таблица с интервалами
    left join 
    (
      select 'a' name, STR_TO_DATE('2013-02-11', '%Y-%m-%d') date_r union all
      select 'aa' name, STR_TO_DATE('2010-09-01', '%Y-%m-%d') date_r union all
      select 'b' name, STR_TO_DATE('1968-02-11', '%Y-%m-%d') date_r union all
      select 'bb' name, STR_TO_DATE('1969-01-21', '%Y-%m-%d') date_r union all
      select 'c' name, STR_TO_DATE('1980-02-11', '%Y-%m-%d') date_r union all
      select 'd' name, STR_TO_DATE('1989-02-11', '%Y-%m-%d') date_r union all
      select 'z' name,  null date_r -- препод, у которого нет данных др.
    ) prepod on inters.begin <= year(prepod.date_r) and inters.end >= year(prepod.date_r)
             or inters.begin is null and inters.end >= year(prepod.date_r)
             or inters.begin <= year(prepod.date_r) and inters.end is null
             or prepod.date_r is null and inters.begin is null and inters.end is null
    group by inters.begin, inters.end
    order by inters.begin desc, inters.end desc
    ) a
    Ответ написан
    4 комментария
  • Можно ли сохранить последовательность вывода полей?

    BasiC2k
    @BasiC2k
    .NET developer (open to job offers)
    Для тех, которые не найдены - надо чуть видоизменить запрос. Вместо
    COUNT(*) 'Кол-во сотрудников'
    Напишите
    IF(ISNULL(BIRTHDAY), 0, COUNT(BIRTHDAY)) AS 'Кол-во сотрудников'
    Ответ написан
    1 комментарий
  • Какие знания нужны, чтобы создать такой продукт под android?

    Вот примерный список зависимостей, покрывающий описанные вами нужды:

    implementation "com.google.firebase:firebase-core:16.0.1"
    implementation "com.google.firebase:firebase-auth:16.0.2"
    implementation 'com.firebaseui:firebase-ui-auth:4.0.0'
    implementation "com.android.support:appcompat-v7:${supportLibVer}"
    implementation "com.android.support:support-v13:${supportLibVer}"
    implementation "com.android.support:recyclerview-v7:${supportLibVer}"
    implementation "com.android.support:design:${supportLibVer}"
    implementation 'com.android.support:multidex:1.0.3'
    implementation "com.google.android.gms:play-services-maps:${gmsVersion}"
    implementation "com.google.android.gms:play-services-location:${gmsVersion}"
    implementation "android.arch.lifecycle:extensions:${aacVer2}"
    kapt "android.arch.lifecycle:compiler:${aacVer}"
    implementation "android.arch.persistence.room:runtime:${aacVer2}"
    kapt "android.arch.persistence.room:compiler:${aacVer}"
    implementation "com.squareup.retrofit2:retrofit:${retrofitVer}"
    implementation "com.squareup.retrofit2:converter-gson:${retrofitVer}"
    implementation "com.squareup.okhttp3:okhttp:${okHttpVer}"
    implementation "com.squareup.okhttp3:logging-interceptor:${okHttpVer}"
    implementation 'com.karumi:dexter:4.2.0'
    implementation 'com.google.code.gson:gson:2.8.4'
    implementation 'de.hdodenhof:circleimageview:2.2.0'
    implementation 'ch.acra:acra-http:5.1.2'
    implementation('com.afollestad.material-dialogs:core:0.9.6.0') {
        exclude group: 'com.android.support', module: 'appcompat-v13'
    }
    implementation ('com.squareup.picasso:picasso:2.71828') {
        exclude group: 'com.android.support', module: 'animated-vector-drawable'
        exclude group: 'com.android.support', module: 'exifinterface'
    }


    Но, на данном этапе, он, скорее всего, будет для вас бесполезен. :) Начинать надо с другого края.

    Самый главный и ценный навык - технический английский. Определенный уровень даже в режиме "только чтение" позволит вам быть в курсе всех технологических новинок в данной отрасли.

    Следующее корневое знание - система разработки и сборки готовых приложений из исходного проекта. Знание особенностей этой системы и интерес к её эволюции позволит максимально повысить вашу эффективность как разработчика.

    Далее вы должны по поводу и без повода обращаться к руководствам Google по разработке для Android. Если вы Android-разработчик - вам без них никуда. Вникайте в методологии и методики, предлагаемые разработчиком платформы. Это очень важно, поскольку 90% возможностей приложения нормального человека так или иначе завязаны на сервисы Google.

    Затем следуют отраслевые ресурсы. Сайты с библиотеками кода и средствами разработки, через которые обменивается знанием подавляющее большинство разработчиков - ещё один ключ к успеху. В наше время лучше всего не изобретать колесо, если вы не заявляете себя в качестве изобретателя и конструктора колёс. Старайтесь в первую очередь использовать наработки людей, которые уже потратили своё время на решение конкретной задачи. Множество драгоценных камней сверкает в таких местах как https://android-arsenal.com/ , например.

    И пара советов лично от меня:
    • Изучайте Kotlin.
    • Приобретите 16 gb памяти, SSD и процессор с четырьмя или более ядрами. Установите и освойте Linux, хотя бы в объёме, необходимом для разработки приложений. Впрочем, я уверен, когда привыкнете, он вам понравится сам по себе. Я рекомендую Linux Mint.
    Ответ написан
    Комментировать
  • Какие знания нужны, чтобы создать такой продукт под android?

    ApeCoder
    @ApeCoder
    Надо знать, как писать UI под андроид, из каких компонентов состоит UI, рекомендации по визуальному дизайну .

    Перечень ограничений, которые android накладывает на приложение (какие разрешения просить, например, какие операции выполняются асинхронно). Какой паттерн для отделения бизнес логики от UI выбрать.

    у каждого пользователя есть своя страница,


    - Где и как хранить данные (тут нужен бекенд - это не связано с андроидом).
    - Как приложение будет получать данные? (протокол работы приложения с фронтэндом)
    - Каким образом обеспечивать авторизацию, защиту от подслушивания и перехвата. Модель атак на приложение.
    - Соответствие приложения европейскому (GPDR) и российскому законодательствам о персональных данных

    можно писать сообщения в ЛС либо в общий чат,


    - каким образом работают оповещения на Android
    - соответствие российскому законодательству об организаторах распространения информации

    присутствует карта города, на которой


    - Выбрать поставщика картографической информации (google, yandex, bing), ознакомиться с лицензией

    отмечены какие-либо места с фотографиями,


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

    также есть некая база с определёнными фотографиями/текстом, доступные всем.


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

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Потому что вы работаете не с MySQL, а с MariaDB. У неё нет опции VISIBLE/INVISIBLE для индексов.
    Ответ написан
    2 комментария
  • Почему два SSD диска с разными ОС не видят друг друга?

    @Ajex
    Вы когда ставили вторую систему, первый загрузочный диск отключали?
    Тогда у вас просто в загрузчик не прописалась вторая ось на втором жестком диске и придется это сделать вручную.
    тут способы какие-то такие https://sonikelf.ru/spisok-zagruzki-operacionnyx-s...
    Ответ написан
    Комментировать
  • Почему два SSD диска с разными ОС не видят друг друга?

    tsklab
    @tsklab
    Здесь отвечаю на вопросы.
    не видят друг друга
    Видят: на картинке два диска.

    Загружайтесь через меню выбора диска загрузки в BIOS.
    Ответ написан
    1 комментарий
  • Почему не получается открыть порт для OpenVPN?

    @UPSA
    anykey. Я не программист, я просто ленивый.
    Заставляешь смотреть видео не хороший человек )))
    1.
    remote здесь ip
    - IP адрес маршрутизатора надеюсь. В видео для примера указан 176.122.115.66. Этот IP выдает провайдер (белый IP) для твоего ASUS.
    2. надеюсь провайдер не режет порты )))
    UPD
    3. push "route 192.168.0.0 255.255.255.0" заменить push "route 192.168.1.0 255.255.255.0"
    Ответ написан
    2 комментария
  • Как преобразовать строку в словарь полученную из базы данных?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    import json
    
    data = json.loads(myresult[0])
    Ответ написан
    Комментировать
  • Как выводить русские символы в файл python?

    @abcd0x00
    import codecs
    import json
    
    with codecs.open('file.txt', 'w', encoding='utf-8') as fout:
        json.dump({u'абв': u'где'}, fout, ensure_ascii=False)


    [guest@localhost py]$ cat file.txt 
    {"абв": "где"}[guest@localhost py]$
    Ответ написан
    1 комментарий
  • Как избежать закрытия соединения с БД, если коннект осуществляется из другой библиотеки?

    В самом mysql можно в конфиге прописать wait_timeout большой, но это не совсем выход...
    В том же php есть функция mysqli_ping или что-то такое, у меня тоже скрипт висел месяцами и изредка поймав запрос начинал его обрабатывать работая с бд, естественно коннект отваливался какой бы таймаут не указал, а сильно большие таймауты у сервера ведут к подвисшим соединениям незакрытым, поэтому, в своей программе продумайте такой момент в прослойке к БД, чтобы запоминало время последнего обращения к БД и если оно превышает например 2 минуты, то проверять коннект и если его нет, то переконектить.
    Ответ написан
    Комментировать
  • Что это за дополнительные переменные в функции?

    @sash999
    просто админ из деревни
    Это называется аннотация типов. В вашем случае она говорит, что функция принимает параметром int, по дефолту он равен -1 и возвращает она лист. Читать тут
    Ответ написан
    Комментировать
  • Что это за дополнительные переменные в функции?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    Это Type Hints.

    quest_id: int = -1 означает, что аргумент quest_id принимает значения только типа int

    -> list означает, что функция возвращает список.
    Ответ написан
    2 комментария
  • Как добавлять/удалять новые данные в базе данных?

    KodyWiremane
    @KodyWiremane
    Пони, Debian, LEMP, LAN, любитель
    На мой непрофессиональный взгляд, можно хранить в дополнительном словаре соответствие st номеру row в myresults, потом пройтись по множеству удалённых строк, по словарю определить для каждой номер row в myresults и построить запрос на удаление, используя значения из row. Это решает проблему удаления.

    Вариация — добавить в БД автоинкрементируемый столбец id, в словаре сохранять именно этот id (st→id), тогда запрос на удаление получается гораздо проще.

    Для добавления, мне кажется, только парсить строку регуляркой.

    import re;
    
    line = '25.06.2019 272\xd0\xb0 4 13:20 - 14:50 \xd0\xbb\xd0\xb5\xd0\xba. \xd0\xad\xd0\xba\xd0\xbe\xd0\xbd\xd0\xbe\xd0\xbc\xd0\xb8\xd0\xba\xd0\xb0 \xd0\xbe\xd1\x80\xd0\xb3\xd0\xb0\xd0\xbd\xd0\xb8\xd0\xb7\xd0\xb0\xd1\x86\xd0\xb8\xd0\xb8 \xd0\x9a\xd0\xb0\xd0\xbb\xd1\x83\xd0\xb3\xd0\xb8\xd0\xbd\xd0\xb0 \xd0\x9d.\xd0\x90. 314 \xd0\x9d ';
    expr = re.compile('^([0-9.]+) ([0-9\xd0\xb0-\xd1\x8f]+) (\d+) (\d+:\d+) - (\d+:\d+) (.*) (\d+ \xd0\x9d) $');
    match = expr.match(line);
    
    for val in match.groups() :
    	print(val);


    Либо более читаемо,
    # -*- coding: utf-8 -*-
    # комментарий выше должен быть первой или второй строкой в файле исходника, содержащего юникод (здесь, русские буквы)
    
    import re;
    
    line = '25.06.2019 272а 4 13:20 - 14:50 лек. Экономика организации Калугина Н.А. 314 Н ';
    expr = re.compile('^([0-9.]+) ([0-9а-я]+) (\d+) (\d+:\d+) - (\d+:\d+) (.*) (\d+ Н) $');
    match = expr.match(line);
    
    for val in match.groups() :
    	print(val);
    Ответ написан
    4 комментария
  • Как сделать ID записи последовательными без пропусков?

    vaflya
    @vaflya
    Ничего личного, это всего лишь хобби.
    не нужно из-за индексации сайта поисковиками, и при переходе из гугла к примеру. Человек получит другое совсем объявление. а так же может нарушиться структура в БД. Я тоже боялся таких пустот, но это была глупость по неопытности. И как вариант не удалять, а помечать is_remove : True / False.
    Ответ написан
    2 комментария
  • Почему изображение в scr="" не выводится?

    @dasauser
    Пишу на PHP
    g8 = '</p><img scr=';
    поменяйте scr на src
    Ответ написан
  • Как изменить цвет ряда в таблице?

    slo_nik
    @slo_nik Куратор тега PHP
    Доброе утро.
    Не используйте bgcolor, нафталином попахивает...
    Не показывайте html через echo.
    Вы подставляете переменную, но Вы её не показываете. Необходимо использовать echo или её псевдоним.
    Или <?php echo $color ?> или <?= $color ?>
    Так же необходимо значение атрибутов html тегов обрамлять кавычками.
    <?php
     $type = 'add';
     $color = $type == 'add' ? 'red' : 'white';
    ?>
    <table style="width: 200px; height: 100px;">
      <tr style="background:<?= $color ?>">
        <td></td>
        <td></td>
        <td></td>
      </tr>
      <tr style="background:<?= $color ?>">
        <td></td>
        <td></td>
        <td></td>
      </tr>
      <tr style="background:<?= $color ?>">
        <td></td>
        <td></td>
        <td></td>
      </tr>
      <tr style="background:<?= $color ?>">
        <td></td>
        <td></td>
        <td></td>
      </tr>
    </table>
    Ответ написан
    8 комментариев
  • Почему сайт на Wordpress с шаблонами Elementary мог сломаться?

    agmegadeth
    @agmegadeth
    Веб-разработчик в дизайн студии
    Скорее всего, дело в бесплатном хостинге (сильно ограниченных ресурсах) и не оптимизированным коде вп с расширениями. Хостинг ложится от превышения допустимых нагрузок на цп\бд.
    В любом случае можно задать вопрос тп хостинга - они точнее скажут почему ложится сервер.
    Ответ написан
    4 комментария