Пока знакомился с темой узнал, что если указатели указывают на разные объекты, то их нельзя сравнивать с помощью <, >, >=, <=. (Ведь мы как раз и хотим узнать, указатели на один и тот же объект или нет). Поэтому нам нельзя использовать эти операторы. Можно лишь использовать == и !=. Но тогда придётся пройтись по всем возможным значениям, чтобы выяснить, есть ли совпадение.
bool doesOverlap(int *arr1, int size1, int *arr2, int size2) {
bool isOverlap = false;
for (int i = 0; i < size1; i++) {
for (int j = 0; j < size2; j++) {
isOverlap |= (arr1 + i) == (arr2 + j);
if (isOverlap) break;
}
if (isOverlap) break;
}
return isOverlap;
}
Тоже и касается и редактора кода - если бы мне пришлось работать только на Visual Studio, то как минимум в первую очередь я сделал плагин, который возвращает классическое выделение и напрочь убрал цветное выделение, кроме классического зелёного для препроцессора и директив компилятора и синего для значений констант. Наблюдать постоянную ЛГБТ-подсветку, которую ещё трудно отключить, во всём исходнике довольно утомительное удовольствие.
Наверное, это субъективно, но если будет слишком мало цветов, текст будет одного цвета или, наоборот, цветов будет слишком много, то будет тяжело ориентироваться по тексту. Предположу, что для каждого "мало" и "много" свои (вообще видел пользователя в интернете, который писал, что отключил полностью подсветку синтаксиса в своём редакторе и пользуется минимумом плагинов).
def take_position(id_user):
connection = get_connection()
try:
with connection.cursor() as cursor:
sql = "SELECT position FROM user WHERE iduser = %s"
cursor.execute(sql, (id_user))
line = cursor.fetchone()
if line is None:
return_count = 0
else:
return_count = line["position"]
finally:
connection.close()
return return_count
Тут есть одна проблема. Что если достать данные не получится? Тогда return_count будет не объявлен, на последней строчке код ляжет.
Также if line is None: ... else: ... можно заменить на return_count = line.get("position", 0)
Честно говоря, не понятен выбор в сторону threads, ведь есть асинхронность.
Функция processing_message сильно перегружена. И как быть, если функционал (количество состояний) будет расти? К тому же в таком коде легко будет допустить ошибку (как минимум, из-за того, что состояние выражается через числа).
Ещё мне не понять, почему часть данных находятся в коде (цитаты), а keyboard layout в отдельном файле? К тому же что будет, если вдруг ошибиться в имени файла? (опять ошибка в рантайме)
Желательно бы вообще вынести все credentials (данные от БД, VK API token...) в константы, а ещё лучше вообще вынести их из кода.
Также есть вопрос по поводу обработки сообщений. Почему мы обрабатываем текст таким образом: if message_text == "Цитаты Дурова":, хотя есть payload для клавиатур? И что если вдруг текст на кнопках будет одинаков?
А что если вашим ботом будут пользоваться много людей, придётся очень часто отправлять сообщения, но надо помнить, что у VK API есть лимиты на отправку сообщений (борьба со спамом). Также могут произойти всякие проблемы в сети, надо сделать повторную отправку сообщения. Но её нет. (Кстати, вы сначала обновляете состояние, а только потом отправляете сообщение. Что если сообщение не отправится, но состояние обновится?)
На сайте написано, что после получения гранта студент обязан либо отработать в партнёре-компании 2 (1) года, либо заниматься научной деятельностью, либо заниматься ИТ-бизнесом. Как с этим обстояли дела? Это происходило во время учёбы или ваш сын этим занимается сейчас?
Думаю, всё равно весьма тяжёло жить в таком ритме, даже несмотря на то, интересна работа или нет. Мне кажется, просто у них некое отношение к работе, позволяющее не иметь проблем со здоровьем (хотя мы ж не знаем, есть они у них или нет)
Тут такая разница: можно загуглить и найти ответ на условном stackoverflow, а можно так же загуглить, но уже прочитать мануал/часть мануала. Просто если разницы нет в подходах, то зачем запрещать пользоваться интернетом и работать в читальном зале с источниками? Может, из-за интернета можно легко потерять фокус... У меня есть предположения, но интересно знать истинную запрета интернета. Честно, не смог из текста понять причину.
даже в первом своём вузе запрещала себе интернет, чтобы работать в читальном зале с источниками
Как я понимаю, из-за интернета человек будет отвлекаться на всякие вещи, не связанные с учёбой, а также будет гуглить ответ на вопрос вместо того, чтобы вычитать в какой-то статье/книге. Но вот вопрос — насколько это хорошо работает? Это помогает?
Есть впечатление, что это может позволить избавиться от некоторых когнитивных ошибок.
Проблема лишь в том, что негативное отношение вызовет другие когнитивные ошибки. Другое дело мыслить с холодной головой. Честно, мне кажется, что негативное отношение к людям скажется и на ментальном здоровье, настроении (ведь если человек будет о плохом, то и будет соответствующее настроение)
Я ещё молодой, зелёной, жизни не хлебнул, однако стараюсь отставить предрассудки о незнакомом человеке, стараюсь не смотреть на внешность, чтобы понять характер. Пока это работает.
Честно, не тестировал, но можно взять RSS-ленту Твиттера, потом дать её боту, который может присылать новости по RSS. Нашёл в гугле TheFeedReaderBot. Может, его попробовать. Что касается RSS Твиттера --- тут много решений, но одно из них, это зайди сюда, найти инстанс, который работает, написать ник, потом наверху справа будет иконка RSS. Довольно костыльно, но в теории должно работать. Можно найти метод лучше получать RSS, но суть одна
UPD: попробовал первый попавшийся инстанс, но replies были от 30 июня. Попробовал второй --- успех! вот ссылка https://nitter.domain.glass/elonmusk/with_replies/rss
Я немного почитал код библиотеки zip, там используется conduit, а получение первичной информации — информация о самом архиве и файлах, которые в нём есть — вообще происходит так (те самые hSeek + hGet). Так что, как я понимаю, binary-generic-combinators не особо поможет. Конечно, для того, чтобы спарсить заголовок, может и подойдёт, но всё равно придётся использовать библиотеку наподобие conduit.
off topic
Можно в джаббере, но кто им сейчас пользуется
Я в личку вам написал свой адрес.
А это не вы там про парсинг FAT спрашивали, кстати?
Да, я :\
Удалил сообщение, потому что понял, что не по теме вообще.
Я пробовал делать так, но это не работало, если не было -O2. В любом случае до этого я использовал hGet и hSeek. И всё же это облегчает работу, потому что теперь не придётся тащить везде IO. Заметил, что если два раза попытаться сделать так, как вы сделали, то начинает читаться файл (может, не весь)
По поводу второго пункта: будет ли эффективным парсер того же самого zip (да вообще любых файлов, где находится маленькая файловая система; соответственно, чтобы прочитать один файл в это мини-файловой системе не надо читать весь файл (в котором находится эта fs), надо использовать fseek и прочитать содержимое)? И не скатится ли всё к императивному коду?
Проблема ещё в библиотеках. К примеру, по дефолту нельзя в binary выбрать, какой будет порядок байтов. По умолчанию Binary тайпкласс реализован для примитивов так, что порядок байт --- big endian. И как с этим быть?
На мой взгляд, человеку, ушедшему от скуки в "субъективную реальность", рано или поздно надоест это. К тому же жизнь всё-таки обязует "заниматься неинтересными вещами". Так что полностью свалиться нельзя, как мне кажется.
{-# LANGUAGE TemplateHaskell #-}
module Main where
import Control.Lens hiding (element)
import Control.Lens.TH
data MyObject = MyObject { _field :: Int } deriving (Show)
$(makeLenses ''MyObject)
generate :: MyObject -> [Int] -> [MyObject]
generate obj numbers = foldl go [] numbers
where go l n = l ++ [ set field (n + view field obj) obj ]
main :: IO ()
main = putStrLn . show $ generate obj [1..99]
where obj = MyObject 123
Не знаю, насколько это хорошее решение. На самом деле, я до конца не понимаю, как это всё работает. Либо я какой-то не такой, либо высокий порог входа.
Наверное, надо лучше покопаться в теории категорий, чтобы было полное понимание всех этих монад, функторов…
Такое чувство, будто первый день программирую!
Действительно, мало чего можно понять по описанию json.load. Мы не знаем ни про типы, которые он может вернуть, ни про исключентя, которые он может выбросить. Так что единственный нормальный способ, как по мне, это попробовать функцию в REPL. Можно посмотреть на поведение при разных входных данных. Тогда станет более менее понятно.
Тогда и стиль программирования отличается. Если в том же Haskell мы можем рассмотреть все возможные варианты и обработать все возможные ошибки, а в Python об ошибках мы будем узнавать уже во время разработки (т.е. забудем какую-то вещь обработать, но только через время о ней узнаем) и даже в продакшене (есть такая вещь, как sentry). Возможно, проблема в стиле. Вы привыкли программировать в одном стиле, и оказывается, что на Python так программировать будет тяжело.
Кстати, что там с количество библиотек под Haskell и как там с его популярностью? Я понимаю, что популярность не должна играть большую роль, но ведь от популярности в какой-то мере зависит и количество библиотек. Чем больше библилиотек, тем больший спектр задач можно решать на Haskell. Другой вопрос — а нужна ли такая гибкость?
Конечно, Рамблер делала ужасные вещи, но разве мы должны ставить минусы под постами, которые вообще никакого отношения к тому инциденту? Ведь бизнес хотели отжать одни люди, а писали статью другие. Так значит мы должны принижать труд вторых?
Ни разу не программист на C, но про UB интересно стало.
Вот моя реализация:
Пока знакомился с темой узнал, что если указатели указывают на разные объекты, то их нельзя сравнивать с помощью
<,>,>=,<=. (Ведь мы как раз и хотим узнать, указатели на один и тот же объект или нет). Поэтому нам нельзя использовать эти операторы. Можно лишь использовать==и!=. Но тогда придётся пройтись по всем возможным значениям, чтобы выяснить, есть ли совпадение.Следуете за Люком Смитом (Luke Smith)!
Наверное, это субъективно, но если будет слишком мало цветов, текст будет одного цвета или, наоборот, цветов будет слишком много, то будет тяжело ориентироваться по тексту. Предположу, что для каждого "мало" и "много" свои (вообще видел пользователя в интернете, который писал, что отключил полностью подсветку синтаксиса в своём редакторе и пользуется минимумом плагинов).
Тут есть одна проблема. Что если достать данные не получится? Тогда
return_countбудет не объявлен, на последней строчке код ляжет.Также
if line is None: ... else: ...можно заменить наreturn_count = line.get("position", 0)Честно говоря, не понятен выбор в сторону
threads, ведь есть асинхронность.Функция
processing_messageсильно перегружена. И как быть, если функционал (количество состояний) будет расти? К тому же в таком коде легко будет допустить ошибку (как минимум, из-за того, что состояние выражается через числа).Ещё мне не понять, почему часть данных находятся в коде (цитаты), а keyboard layout в отдельном файле? К тому же что будет, если вдруг ошибиться в имени файла? (опять ошибка в рантайме)
Желательно бы вообще вынести все credentials (данные от БД, VK API token...) в константы, а ещё лучше вообще вынести их из кода.
Также есть вопрос по поводу обработки сообщений. Почему мы обрабатываем текст таким образом:
if message_text == "Цитаты Дурова":, хотя естьpayloadдля клавиатур? И что если вдруг текст на кнопках будет одинаков?А что если вашим ботом будут пользоваться много людей, придётся очень часто отправлять сообщения, но надо помнить, что у VK API есть лимиты на отправку сообщений (борьба со спамом). Также могут произойти всякие проблемы в сети, надо сделать повторную отправку сообщения. Но её нет. (Кстати, вы сначала обновляете состояние, а только потом отправляете сообщение. Что если сообщение не отправится, но состояние обновится?)
На сайте написано, что после получения гранта студент обязан либо отработать в партнёре-компании 2 (1) года, либо заниматься научной деятельностью, либо заниматься ИТ-бизнесом. Как с этим обстояли дела? Это происходило во время учёбы или ваш сын этим занимается сейчас?
Думаю, всё равно весьма тяжёло жить в таком ритме, даже несмотря на то, интересна работа или нет. Мне кажется, просто у них некое отношение к работе, позволяющее не иметь проблем со здоровьем (хотя мы ж не знаем, есть они у них или нет)
Тут такая разница: можно загуглить и найти ответ на условном stackoverflow, а можно так же загуглить, но уже прочитать мануал/часть мануала. Просто если разницы нет в подходах, то зачем запрещать пользоваться интернетом и работать в читальном зале с источниками? Может, из-за интернета можно легко потерять фокус... У меня есть предположения, но интересно знать истинную запрета интернета. Честно, не смог из текста понять причину.
Как я понимаю, из-за интернета человек будет отвлекаться на всякие вещи, не связанные с учёбой, а также будет гуглить ответ на вопрос вместо того, чтобы вычитать в какой-то статье/книге. Но вот вопрос — насколько это хорошо работает? Это помогает?
Проблема лишь в том, что негативное отношение вызовет другие когнитивные ошибки. Другое дело мыслить с холодной головой. Честно, мне кажется, что негативное отношение к людям скажется и на ментальном здоровье, настроении (ведь если человек будет о плохом, то и будет соответствующее настроение)
Я ещё молодой, зелёной, жизни не хлебнул, однако стараюсь отставить предрассудки о незнакомом человеке, стараюсь не смотреть на внешность, чтобы понять характер. Пока это работает.
Честно, не тестировал, но можно взять RSS-ленту Твиттера, потом дать её боту, который может присылать новости по RSS. Нашёл в гугле
TheFeedReaderBot. Может, его попробовать. Что касается RSS Твиттера --- тут много решений, но одно из них, это зайди сюда, найти инстанс, который работает, написать ник, потом наверху справа будет иконка RSS. Довольно костыльно, но в теории должно работать. Можно найти метод лучше получать RSS, но суть однаUPD: попробовал первый попавшийся инстанс, но replies были от 30 июня. Попробовал второй --- успех! вот ссылка
https://nitter.domain.glass/elonmusk/with_replies/rssЯ немного почитал код библиотеки zip, там используется
conduit, а получение первичной информации — информация о самом архиве и файлах, которые в нём есть — вообще происходит так (те самыеhSeek+hGet). Так что, как я понимаю,binary-generic-combinatorsне особо поможет. Конечно, для того, чтобы спарсить заголовок, может и подойдёт, но всё равно придётся использовать библиотеку наподобиеconduit.Я в личку вам написал свой адрес.
Да, я :\
Удалил сообщение, потому что понял, что не по теме вообще.
Я пробовал делать так, но это не работало, если не было
-O2. В любом случае до этого я использовалhGetиhSeek. И всё же это облегчает работу, потому что теперь не придётся тащить вездеIO. Заметил, что если два раза попытаться сделать так, как вы сделали, то начинает читаться файл (может, не весь)Можно с вами связаться? У меня есть пару вопросов.
По поводу второго пункта: будет ли эффективным парсер того же самого zip (да вообще любых файлов, где находится маленькая файловая система; соответственно, чтобы прочитать один файл в это мини-файловой системе не надо читать весь файл (в котором находится эта fs), надо использовать
fseekи прочитать содержимое)? И не скатится ли всё к императивному коду?Проблема ещё в библиотеках. К примеру, по дефолту нельзя в
binaryвыбрать, какой будет порядок байтов. По умолчаниюBinaryтайпкласс реализован для примитивов так, что порядок байт --- big endian. И как с этим быть?На мой взгляд, человеку, ушедшему от скуки в "субъективную реальность", рано или поздно надоест это. К тому же жизнь всё-таки обязует "заниматься неинтересными вещами". Так что полностью свалиться нельзя, как мне кажется.
Не знаю, насколько это хорошее решение. На самом деле, я до конца не понимаю, как это всё работает. Либо я какой-то не такой, либо высокий порог входа.
Наверное, надо лучше покопаться в теории категорий, чтобы было полное понимание всех этих монад, функторов…
Такое чувство, будто первый день программирую!
Действительно, мало чего можно понять по описанию
json.load. Мы не знаем ни про типы, которые он может вернуть, ни про исключентя, которые он может выбросить. Так что единственный нормальный способ, как по мне, это попробовать функцию в REPL. Можно посмотреть на поведение при разных входных данных. Тогда станет более менее понятно.Тогда и стиль программирования отличается. Если в том же Haskell мы можем рассмотреть все возможные варианты и обработать все возможные ошибки, а в Python об ошибках мы будем узнавать уже во время разработки (т.е. забудем какую-то вещь обработать, но только через время о ней узнаем) и даже в продакшене (есть такая вещь, как sentry). Возможно, проблема в стиле. Вы привыкли программировать в одном стиле, и оказывается, что на Python так программировать будет тяжело.
Кстати, что там с количество библиотек под Haskell и как там с его популярностью? Я понимаю, что популярность не должна играть большую роль, но ведь от популярности в какой-то мере зависит и количество библиотек. Чем больше библилиотек, тем больший спектр задач можно решать на Haskell. Другой вопрос — а нужна ли такая гибкость?
Можно себя же пинговать изнутри. В данном случае надо запускать такую функции в отдельном потоке.
Веб на хаскеле? Так действительно делают?
Конечно, Рамблер делала ужасные вещи, но разве мы должны ставить минусы под постами, которые вообще никакого отношения к тому инциденту? Ведь бизнес хотели отжать одни люди, а писали статью другие. Так значит мы должны принижать труд вторых?