Пол дня мыл холодильник.
yay, скоро tox догонит по популярности жабер.
https://toxstats.com/
все от человека и от подхода зависит. Мне вот дудка совсем не мешает каждый день по 2 часа посвящать изучению тайского, математики и стабильных тренировок в зале 3 раза в неделю. В принципе можно и без травы жить, но не вижу ничего плохого, чтобы вечером дунуть, да позалипать в мультики, всяко меньше ущерба, чем от алкашки.
Изучение математики неразывно связано с систематическим решением задач и (если ты изучаешь чистые разделы) с доказыванием теорем из изучаемой области. Решение задачи требует ultimate концентрации.
Дудка снижает концентрацию. Вроде бы, только что решал (не решил) задачу по геометрии, а через полчаса обнаруживаешь что скроллишь статьи по квантовой механике в википедии. Да, под дудкой больше доставляет скроллить википедию смотреть видосики с N-мерными телами, выворачиванием сферы наизнанку и так далее. Но тяжело назвать это изучением.
Трава помогает, когда ты уже достаточно проебался над задачей, подгрузил в мозг нужные части для ее решения и требуется ВИЗУАЛИЗИРОВАТЬ проблему. В этом случае дудка может помочь.
Tuna De Tierra - Morning Daemon
https://tinystash.undef.im/il/ANtgqykR1htyw3xeMbgVsP1ou6r1NUzr5qxZK6y3wes2.mp3
@je
Рекомендую для выбора съемного жилья заюзать google maps api distance matrix. У меня, например, собран список более менее рандомных мест, в которые я могу ходить. Я считаю с помощью google maps api, сколько из разных потенциальных жилищ я буду в среднем времени тратить в пути (либо с коэффициентами, например огромный коэффициент для места работы и маленький для любимого наркопритона, либо поровну) и строю таблицу для всех потенциальных квартир:
велосипедом
общественный транспорт, меньше всего пересадок (самый нормальный режим для гугл мапс по Москве)
только метро, мцк и поезда, потому что наземный транспорт в Москве слишком рандомно ходит
Код, который придется почитать, чтобы как-нибудь использовать. Строит таблички со среднем временем в пути в месяц для каждой квартиры и это же время, конвертированное в рубли (умноженное на константу)
#!/usr/bin/env python3
import pandas as pd
import googlemaps
import pytz
from collections import namedtuple
from pprint import pprint
from itertools import chain, repeat
from datetime import datetime, tzinfo
from functools import partial
gmaps = googlemaps.Client(key='AREDACTEDREDACTEDREDACTED')
# ЗАПОЛНИТЬ: сюда следует ввести адреса потенциальных мест, где я буду жить
# каждое значение может быть либо строкой с адресом, либо GPS координатами
home_addresses = [
"Россия, Москва, ул. Усачева, 29к3",
"Россия, Москва, ул. Беговая, 17к1",
"Россия, Москва, Коптевская ул., 83к2",
"Россия, Москва, ул. Степана Супруна, 3-5",
"Россия, Москва, Новокузнецкая ул., 13/15",
"Россия, Москва, Бутырская ул., 86Б",
"Россия, Москва, ул. Правды, 6/34",
"Россия, Москва, ул. Зои и Александра Космодемьянских, 11А",
"Россия, Москва, Ленинградский просп., 78К1",
"Россия, Москва, Новокузнецкая ул., 13С1",
"Россия, Москва, Севастопольский просп., 5АК1",
"Россия, Москва, ул. 1812 года, 4/45К2",
"Россия, Москва, Светлый проезд, 4К4",
"Россия, Москва, Делегатская ул., 14/2",
"Россия, Москва, ул. Маршала Рыбалко, 3",
]
# In[31]:
# ЗАПОЛНИТЬ: сюда следует ввести пары вида:
# (адрес часто посещаемого места, период как часто вы будете добираться туда-обратно между домом и этим местом)
#
# первое значение может быть либо строкой с адресом, либо GPS координатами
#
# если второе значение например 8, это значит,
# что раз в 8 дней я езжу туда и обратно домой.
# если у вас есть место, куда вы ездите раз в 7 дней, но оттуда
# всегда едете еще куда-то, то ставьте значение 14
favorite_places = [
("Россия, Москва, ул. Кузнецкий Мост, 13"), # habimoshka
("Россия, Москва, ул.Большая Дорогомиловская, д.5 к.2"), # кочерга
("Россия, Москва, Хохловский пер, 7/9 стр 2"), # neuron hackspace
("Россия, Москва, Бобров пер. 6 стр. 1, 2"), # библиотека тургенева
("Россия, Москва, Милютинский пер., 19/4, стр.1"), # зеленая дверь
("Россия, Москва, шелапутинский переулок, д. 6"), # swing-in-moscow
((55.737924, 37.620204)), # рандомный дом в центре
("Россия, Москва, Ленинградское шоссе, 39Ас3"), # рандомная потенциальная работа - касперский
("Россия, Москва, Кожевническая улица, 7"), # рандомная работа
("Россия, Москва, Нижний Сусальный переулок, 5с19"), # рандомная работа
("Россия, Москва, ул. Волочаевская, д. 5, корп. 1"), # рандомная работа - крок
("Россия, Москва, ул. Летниковская, 10, стр. 5"), # рандомная работа
("Россия, Москва, Лесная улица, 7"), # рандомная работа - авито
("Россия, Москва, пр-т Андропова, д. 18, корп. 1"), # рандомная работа
("Россия, Москва, Дмитровское шоссе, 157с5"), # рандомная работа
("Россия, Москва, Трубная улица, 23-2"), # ранд работа
("Россия, Москва, Никопольская улица, 4"), # рандом работа
("Россия, Москва, улица Ленинская Слобода, 19"), # рандомная работа
"Москва, ул. Малая Юшуньская, д. 1 к2", # locus solus
"Москва, метро Римская", # предел
"Москва, Образцова, 14" # msds
]
favorite_places = list(zip(
favorite_places,
repeat(len(favorite_places) / (2 * 4.5 / 7))))
def calc_avg_travel(home_addresses, favorite_places,
how: str, depart_when: datetime):
request_funcs = {
"bike": partial(gmaps.distance_matrix, mode="bicycling"),
"car": partial(gmaps.distance_matrix, mode="driving"),
"walking": partial(gmaps.distance_matrix, mode="walking"),
"subway_train": partial(
gmaps.distance_matrix, mode="transit",
transit_mode=["subway", "train"],
transit_routing_preference="fewer_transfers"),
"public_transport": partial(
gmaps.distance_matrix, mode="transit",
transit_routing_preference="fewer_transfers")}
assert how in request_funcs.keys()
favorite_places = [{"location": location, "period_in_days": period_in_days}
for location, period_in_days in favorite_places]
location_col = []
duration_col = []
home_address_col = []
period_in_days_col = []
for home in home_addresses:
result = request_funcs[how](
[home], [place["location"] for place in favorite_places],
departure_time=depart_when)
assert result["status"] == "OK"
assert len(result["destination_addresses"]) == len(favorite_places)
assert len(result["origin_addresses"]) == 1
location_col += result["destination_addresses"]
duration_col += [record["duration"]["value"] for record in result["rows"][0]["elements"]
if record["status"] == "OK"]
home_address_col += [result["origin_addresses"][0]] * len(result["destination_addresses"])
period_in_days_col += [place["period_in_days"] for place in favorite_places]
data = pd.DataFrame({
"location": location_col, "duration": duration_col,
"home_address": home_address_col, "period_in_days": period_in_days_col
})
data["duration_per_day"] = data.duration / data.period_in_days
return data
DEPARTURE_TIME = datetime(2017, 9, 5, 12, 0, tzinfo=pytz.utc) # сейчас указано в UTC. Москва это UTC+3
# a dumb test, kinda
def test_gmaps_api():
home_addresses = [
"Россия, Москва, Коптевская ул., 83к2",
"Россия, Москва, ул. Степана Супруна, 3-5"
]
destination_addresses = zip(home_addresses, [1, 3])
data = calc_avg_travel(home_addresses, destination_addresses,
"public_transport", DEPARTURE_TIME)
print(data)
durations = data["duration"]
assert durations.iloc[0] == 0
assert durations.iloc[1] != 0
assert durations.iloc[2] != 0
assert durations.iloc[3] == 0
test_gmaps_api() # yeah it works
data = calc_avg_travel(home_addresses, favorite_places,
"subway_train", DEPARTURE_TIME)
unique_home_addresses = pd.DataFrame(pd.Series(data["home_address"].unique()).rename("address_by_google"))
unique_home_addresses["input_home_address"] = home_addresses
print(unique_home_addresses)
# ВАЖНО: проверьте в этой табличке, что в колонке address_by_google стоит адрес,
# понятый гуглом правильно (изначальные адреса - в колонке input_home_address)
# In[62]:
unique_destination_addresses = pd.DataFrame(pd.Series(data["location"].unique()).rename("address_by_google"))
unique_destination_addresses["input_favorite_place"] = [str(pair[0]) for pair in favorite_places]
print(unique_destination_addresses)
# ВАЖНО: проверьте в этой табличке, что в колонке address_by_google стоит адрес,
# понятый гуглом правильно (изначальные адреса - в колонке input_favorite_place)
# In[63]:
print(data.head())
print(data.tail())
# ЗАМЕЧАНИЕ: здесь будут просто показаны конец и начало получившейся таблицы
# Если не лень, можете посмотреть, чтобы каких-то неадекватных значений не было
# duration - время чтобы добраться от места до места в секундах
# period_in_days - тот самый указанный выше период в днях
# duration_per_day - кол-во секунд в день
# In[64]:
# calculate travel time per day for each home address
travel_times_per_day_per_home = pd.DataFrame(
(data.groupby("home_address")["duration_per_day"].sum() / 60)
.rename("minutes_of_travel_per_day")
).sort_values(by="minutes_of_travel_per_day")
print(travel_times_per_day_per_home)
# ВАЖНО: это финальный результат
# для каждого адреса квартиры в другой колонке будет указано кол-во минут, затрачиваемых на дорогу, в день
# адреса будут отсортированы от самых выгодных по времени в дороге до самых невыгодных
# In[65]:
COST_PER_HOUR = 340 # RUR
costs = travel_times_per_day_per_home .assign(hours_per_month=lambda df: (df["minutes_of_travel_per_day"] * 30.5 / 60).round(1)) .assign(converted_rur_per_month=lambda df: df["hours_per_month"] * COST_PER_HOUR)
print(costs)
Короче, хочу интерактивно процедурно генерить, ебать триангулярный меш и визуализировать это все. На перфоманс в разумных пределах похуй.
В голову пока что приходит МАТЛАБ и возможно скриптование блендера . У петушона есть что-нить достойное?
arche выпилился, настало время перечитать его знаменитое интервью
... Между разумом и предопределением нет противоречия. Оба они всего лишь частные способы самоорганизации хаоса, одни из огромного множества его возможностей. Внутри этого узкого промежутка, где хаос покровительственно относится к присутствию порядка в себе, и существует доступный человеку мир (а значит и разум, и предопределение).
... Свобода — это фикция, причём в самом прямом смысле. Если мы рассмотрим популярное разделение на «свобода от» и «свобода для», то заметим нечто общее для обоих вариантов, подразумевающее отрицание неких преград, а отрицание, в отличие от утверждения, фиктивно (кстати, человеческое бессознательное не может представить отрицания, поэтому при гипнозе стараются не использовать частицу «не»).
... Разумеется, есть разного рода компромиссы с так называемой реальностью, прекрасно работает механизм вытеснения (т.е. многие люди вообще этого не ощущают), некоторые спешат объявить проблему решённой и т.п., но всё это имеет отношение уже не к онтологии, не к гносеологии, а к банальной психологии. Психология же есть своего рода IT-индустрия в отношении человека, а точнее — предельно механистического человека-робота, призванная набором технических трюков погасить неудобный напор бессознательного.
... Принадлежат ли желания человеку или же — человек им? Не напоминают ли они программы, активизирующиеся в подходящий момент? Что если человечество — всего лишь плодородная почва для взращивания неорганического мира вещей? Или, скорее, мира процессов кругооборота вещей (учитывая, что срок использования предметов постоянно снижается, и они из магазина отправляется чуть ли не прямо на помойку)?
... Кларк смотрел на мир сквозь розовые очки и слабо разбирался в магии, поэтому недоговаривает самого существенного: «Любая достаточно развитая технология неотличима от чёрной магии». Приносимый технологией долговременный вред обычно пропорционален её начальным обещаниям, выступающим приманкой.
Тут достаточно вспомнить пример из Гюго — «это убьёт то», сказанное в отношении отпечатанной книги и собора (а затем и Фулканелли убедительно демонстрирует ущербность книги по сравнению с выразительными средствами скульптуры и архитектуры), критику телескопа и микроскопа у Блэйка, лекцию Дугина «Постпространство и чёрные чудеса» и т.д. и т.п.