Теория вероятностей: задача о совпадениях
Как-то, лет 20 назад, смотрел передачу с одним психологом*. Там к нему на консультацию пришла девушка, которая считала себя ясновидящей (или экстрасенсом). Психолог, чтобы доказать девушке, что никакого дара у нее нет, предложил ей эксперимент.
Он дал 6 фотографий людей и шесть листов, где была написана их биография. И предложил совместить их, чтобы фотографии совпали с биографиями. Девушка правильно совместила 3 фото и 3 био. После чего психолог сказал, что раз она угадала лишь половину, это как с монеткой, вероятность 1/2, никакого дара у нее нет, и она может не беспокоиться по поводу того, о чем она там беспокоилась.
А мы как раз проходили теорвер в институте (в школе такого не было). Я, конечно, заморачиваться с решением не стал тогда, но понял, что так просто, как представляется психологу с телеэкрана, вероятность не вычисляется. И вот настала все-таки пора мне, закрыть гештальт и разобраться, какова же была эта вероятность.
Задачи о совпадениях (встречах)
Как оказалось, эксперимент, предложенный психологом, является классической комбинаторной "задачей о встречах" (Problème des rencontres). Есть похожие "задачи о беспорядках", например, "Задача о шляпах" ("Задача Эйлера"), "Задача о конвертах" и т.п. Там в классической формулировке спрашивается, какова вероятность, что ни один из мужчин, оставивших шляпы в гардеробе, не получит назад свою (здесь решение для случая, когда некоторые все же получат). Или что ни один адресат не получит свое письмо. Но у нас немного другая ситуация: часть фото и био должны совпасть — это "частичный беспорядок".
Essay d'analyse sur les jeux de hazard. Выкладки Бернулли (на латыни). Как знак умножения используется точка " . ", а как знак факториала ничего не используется (не придумали) поэтому 1 . 2 . 3 ... n-1 — это "(n-1)!". Номинал — a, b, c…, номер — 1, 2, 3…
Буквально пару слов об истории вопроса. Подобными проблемами математики озаботились в связи с карточной игрой Тринадцать (фр. Treize). Банкующий доставал по очереди из колоды карты. Если порядковый номер карты совпадал с ее номиналом (например, второй картой оказалась двойка), то банкир выигрывал, если ни один номинал не совпадал с порядковым номером, то побеждал игрок. Вычислением вероятностей обоих вариантов занимался Пьер Монмор. Он написал в 1708 году книгу "Аналитическое исследование азартных игр", во 2-м издании которой опубликовал свою переписку (есть на англ.) с Николаем Бернулли. На стр. 301—303 Бернулли приводит математический анализ "встреч" (совпадений): опираясь на известные биномиальные коэффициенты (число сочетаний), он впервые вывел формулу субфакториалов ("беспорядков")**. Ниже будем использовать современную компактную запись этих же идей.
Итак...
Итак, как известно, чтобы вычислить вероятность P, надо число исходов, которые удовлетворяют нашему критерию — 3 фото соотнесены с биографиями верно — разделить на общее число вариантов:
Общее число вариантов, когда n биографий совмещаются с n фотографиями любым образом это n!
А числитель — это "число встреч", рассчитывается по формуле: C(n, k) ⋅ !(n - k). Подставим все это в исходное отношение и получим:
C(n k) — это число сочетаний из n по k. Субфакториал !(n - k) — это "число беспорядков". Факториал n! — это общее число вариантов
Хотя вроде бы у нас 12 элементов — 6 фото и 6 био — но фотографии это фактически позиции, по которым расладывают биографии, или наоборот, биографии — это позиции. Поэтому n = 6. Значит, n! = 6! = 720 — это наш знаменатель. Теперь найдем числитель.
Найдем число сочетаний
Сначала нам надо получить число вариантов, которые дадут три совпадения фотографии и биографии. То есть какие-то три фотографии могут совпасть в разных сочетаниях, и надо найти число этих сочетаний. Есть формула для сочетаний C из n по k, то есть в нашем случае из 6 по 3 (три совпавшие пары из 6): С(n, k) = n! / k! (n - k)!. Но поскольку тут число вариантов не слишком большое, то для наглядности можно проиллюстрировать — цифры будут обозначать фотографии, а буквы — биографии:
1 2 3 4 5 6 — фотографии
а б в г д е — биографии
При такой записи видно, что это та же задача, которую решали Бернулли с Монмором, где был номинал карт a, b, c… и порядковый номер 1, 2, 3… Это еще похоже на задачу, о том, как рассадить n человек по n стульям (если имена подписаны на стульях), чтобы только часть k села на свои места — просто вместо стульев тут фотографии, на которые "рассаживают" биографии.
Возьмем в качестве первого варианта такой, где первые три пары совпали: 1 - а, 2 - б, 3 - в (остальные нас не интересуют). Теперь зафиксируем первые две позиции (1 - а, 2 - б) и будем менять третью, когда варианты для 1 - а, 2 - б кончатся, оставим 1 - а, а 2 - б изменим на 3 - в, когда кончатся все варианты, начинающиеся с 1 - а, начнем искать начинающиеся с 2 - б и т.д. Всего получится 20 вариантов.
Варианты, начинающиеся с 1:
1. 1 - а, 2 - б, 3 - в
2. 1 - а, 2 - б, 4 - г
3. 1 - а, 2 - б, 5 - д
4. 1 - а, 2 - б, 6 - е
5. 1 - а, 3 - в, 4 - г
6. 1 - а, 3 - в, 5 - д
7. 1 - а, 3 - в, 6 - е
8. 1 - а, 4 - г, 5 - д
9. 1 - а, 4 - г, 6 - е
10. 1 - а, 5 - д, 6 - е
Варианты, начинающиеся с 2:
11. 2 - б, 3 - в, 4 - г
12. 2 - б, 3 - в, 5 - д
13. 2 - б, 3 - в, 6 - е
14. 2 - б, 4 - г, 5 - д
15. 2 - б, 4 - г, 6 - е
16. 2 - б, 5 - д, 6 - е
Варианты, начинающиеся с 3:
17. 3 - в, 4 - г, 5 - д
18. 3 - в, 4 - г, 6 - е
19. 3 - в, 5 - д, 6 - е
Вариант, начинающийся с 4:
20. 4 - г, 5 - д, 6 - е
Или то же самое на картинке:
Цветом отмечены сочетания, когда три биографии "сели" на свои позиции (фотографии). Остальные (серые) элементы при этом могут совпасть, могут не совпасть — но нам надо, чтобы они точно не совпали, поэтому ниже будем искать для них число беспорядков
Ну и такой же результат был бы, если бы мы ничего не выписывали, а просто подставили значения в формулу сочетаний:
Найдем число беспорядков
Но на каждое такое удачное "сочетание" трех совпавших пар приходятся еще разные сочетания оставшихся 3-х фотографий и 3-х биографий.
Возьмем первое сочетание, которое мы нашли 1-а, 2-б, 3-в и посмотрим как могут расположиться оставшиеся элементы:
4 - г, 5 - д, 6 - е — 3 совпадения
4 - г, 5 - е, 6 - д — 1 совпадение
4 - е, 5 - д, 6 - г — 1 совпадение
4 - д, 5 - г, 6 - е — 1 совпадение
4 - д, 5 - е, 6 - г — Нет новых совпадений
4 - е, 5 - г, 6 - д — Нет новых совпадений
Вот первые четыре варианта нам не подходят — потому что нас интересуют только ситуации, где правильно выбраны только три пары, не больше — а эти дадут нам новые совпадения, и получится больше 3-х. Значит, на каждое найденное нами сочетание из 6 по 3, которых мы насчитали 20, придется еще по 2 варианта комбинаций оставшихся элементов, которые при этом не дадут новых совпадений. Поэтому надо умножить 20 на 2. Это же число, то есть 2, можно было получить, вычислив субфакториал !3 (так называемое "число беспорядков", т. е. число вариантов, где нет никаких совпадений) по формуле:
Подставим значения в формулу: 3! * (1 - 1/1! + 1/2! - 1/3!) = 6 * ( 1 - 1/1 + 1/2 - 1/6 ) = 6 * 2 / 6 = 2
Ниже опять историческое отступление — можно его пропустить и перейти в конец раздела.
Мы просто подставили значения в формулу субфакториала. Но интересно, как Бернулли ее получил. Когда он пытался вычислить вероятность, что в игре Тринадцать выиграет банкующий — то есть хоть одна карта окажется на своем месте (ее номинал совпадет с порядковым номером) — то заметил следующую странность. Если взять, к примеру, колоду из трех карт (аналог наших оставшихся трех биографий), и предположить, что 1/3 — это вероятность одной конкретной карте оказаться на своей позиции, а затем попытаться вычислить вероятность того, что хоть одна карта окажется на своем месте, то получится 1/3 + 1/3 + 1/3 = 1. Но такого быть не может, иначе банкующий всегда бы выигрывал. А мы сами видели, когда выписывали комбинации, что буквы находятся не на своих позициях, то есть дают "полный беспорядок" только в двух случаях.
Бернулли понял, что карта может оказаться на своем месте в разных вариантах: в нашем случае каждая буква на месте в "г, д, е" и отдельно в "г, е, д", "е, д, г", "д, г, е" — то есть одному условию "буква (карта) на месте" удовлетворяют два варианта. Поэтому нельзя просто сложить 1/3 три раза, а надо еще из вероятности 1 вычесть вероятность того, что карта попадет в один из этих вариантов — C(3, 2) ⋅ 1/6. Это будет 6/6 - 3/6 = 3/6 = 1/2. Теперь вероятность получилась 0.5, что опять противоречит нашим эмпирическим данным — мы видели что буквы были на своих местах в 4-х случаях из шести (4/6), а не в половине. Это произошло потому что вероятность 3/6 полностью поглотила событие "г, д, е", которое удовлетворяет условиям "буква на месте" сразу для всех трех букв.
Поэтому Бернулли еще раз прибавляет вероятность для этой комбинации: 6/6 - 3/6 + 1/6. Вот теперь получается 4/6, что согласовывается с тем, что мы видели, когда писали комбинации с г, д, е. Это вероятность того, что выиграет банкующий — если вычесть ее из 1, получим вероятность того, что выиграет игрок (вероятность беспорядков). P-беспор = 1 - (6/6 - 3/6 + 1/6). Теперь, если заменить 3/6 обратно на C(3, 2) ⋅ 1/6 = 3! / ( 2! ⋅ (3 - 2)!) ⋅ 1/6 и произвести сокращения, то получим 1/2!, а если представить 6/6 как C(3, 1), а 1/6 как C(3, 3) и произвести аналогичные действия, то вместо них получим 1/1! и 1/3!, то есть P-беспор = 1 - (1/1! - 1/2! + 1/3!), а чтобы получить число всех вариантов беспорядков, надо умножить (из формулы вероятности) P-беспор на n! — вот мы и пришли к формуле, которую записали выше.
И кажется, в ходе решения Бернулли первым применил принцип включений-исключений, хотя его еще несколько раз переоткроют — Леонард Эйлер, Адриен-Мари Лежандр, Эжен Каталан, Даниэль Аугусто да Силва. Надо так же упомянуть, что Монмор искал сочетания рекуррентным перебором, "вручную", поэтому не мог считать беспорядки для колод, где карт больше пяти. А Николай Бернулли использовал ту же формулу сочетаний, что и мы — он обнаружил ее в труде своего дяди Якоба Бернулли. Якоб Бернулли много лет писал "Ars Conjectandi" ("Искусство предположений"), но был перфекционистом, постоянно дописывал текст (прямо как я этот пост) и в итоге умер в 1705 году, так и не успев опубликовать свой главный труд — за него это сделал Николай.
Переписка Монмора с Бернулли важна и для теории игр. Вместе с Чарльзом Уолдгрейвом (он был заговорщиком-якобитом и о нем известно в основном из этих писем) они обсуждали стратегию игры "Бедолага" (Задача Уолдгрейва) — в результате последним впервые была предложена стратегия минимакс.
Историческое отступление закончилось.
Теперь имеем числитель и знаменатель для дроби P = 20 * 2 / 720 = 1/18. Это и есть наша вероятность ровно трех совпадений. Как видно, она намного меньше 1/2.
Математическое ожидание
Можно также посчитать, сколько люди будут угадывать в среднем. Для этого надо вычислить математическое ожидание. Сделаем это с помощью метода индикаторных случайных величин — такая величина, которая показывает, произошло событие или нет. То есть, если пара совпала эта величина будет 1, если не совпала — 0. Для математического ожидания надо значения индикатора умножить на его вероятность. Для случая, когда найдена конкретная пара это будет 1 * 1/6 + 0 * 5/6 = 1 / 6. Теперь сложим матожидания для всех пар 1/6 + 1/6 + 1/6 + 1/6 + 1/6 + 1/6 = 6/6 = 1. То есть в среднем, если взять результаты всех людей (кто-то угадает 0, кто-то больше) и разделить на число людей, то получим 1.
Так что там с экстрасенсорикой?
Тут наша девушка могла бы обрадоваться — казалось бы в 3 раза превысила среднестатистические показатели. Но надо еще проверить ее результат на статистическую значимость. Для этого надо вычислить P-value — это вероятность получить такой же или еще более высокий результат при условии, что нулевая гипотеза (девушка угадывает случайно) верна.
Для этого в формулу, которой мы пользовались для определения P, надо подставить в числитель не 40 (то есть число исходов с 3-мя угаданными парами), а общее число исходов для 3-х или более угаданных пар: ровно 3 пары — 40 исходов, ровно 4 пары — 15 исходов, ровно 5 — 0 исходов***, ровно 6 — 1 исход. Всего 56 исходов. Теперь подставим в формулу P-value = 56 / 720 ≈ 0.0777. И... К несчастью (или к счастью) для девушки, статистически значимым считается значение P-value ниже 0.05 — то есть, если бы она угадала 4 пары, то можно было бы о чем-то говорить. А так, это ей просто ну оооооочень сильно повезло. Хотя одного эксперимента, в любом случае, было бы недостаточно.
P. S. Кстати, интересный момент. В статье про беспорядки в википедии в абзаце про задачу о письмах ("если n писем случайным образом положить в n различных конвертов, то какова вероятность, что какое-нибудь из писем попадёт в свой конверт") написано: "ответ почти не зависит (при n ≥ 5) от количества писем и конвертов и примерно равен константе 1-e^-1 ≈ 0,63212". То есть вероятность угадать хотя бы одну пару фото и био из любого их числа, если оно больше 5 (хоть 6 как у нас, хоть миллион), будет близка к 0,63212.
А теория вероятностей меня похоже не отпускает. Переехал на новую квартиру и вокруг моего дома попадается много автомобилей с номерами либо из трех одинаковых цифр, либо вида "001, 002...". Ну то есть каждый день встречаю рядом с домом по пять таких припаркованных автомобилей (из пары десятков). И по-моему не все из них жильцы. Даже шестерка жигули с номером 555 попалась.
P. P. S. Я далеко не Савватеев, поэтому замечания приветствуются=)
* Психологом, предложившим такую проверку девушке, был Андрей Курпатов
** Наткнулся, когда писал пост, на вопрос на math.stackexchange: "I'm looking for the method by which the partial derangement formula D(n,k) was derived. I can determine the values for small values of N empirically, but how the general case formula arose still alludes me." То есть человек спрашивал, как вывели формулу частичных беспорядков — монография Монмора и переписка с Бернулли ему наверное помогли бы это понять (займусь-ка некропостингом). Интересно, что эту задачу позже независимо решил (и усложнил) тогда еще 23-летний Эжен Каталан, и только уже перед публикацией своей статьи D'un Problème de Probabilité, relatif au Jeu de rencontre (оригинал статьи на фр.) узнал, что он далеко не первый — после Монмора и Бернулли ею занимался Эйлер.
*** Для меня это было контринтуитивно — исходов для 5 (или n-1) элементов — 0, а для 6 (или n) — 1. Но по условию задачи, не просто 5 элементов по своим позициям должны расположиться, а оставшийся 1 элемент должен занять не свою. Если ты пять биографий угадал, шестая угадывается автоматически.
Проверяем, кто в школе не спал. Разбираем грамматическую основу, как орешки!
Всем привет! ✌️
Ну что, праздники закончились, пора возвращаться к знаниям и учебе🧑🎓📚.
Давайте устроим интерактив. Надеюсь на вашу поддержку и активность. Ну что, начнем? Расскажите как вы ищете грамматическую основу? Предлагаю разобрать несколько предложений.
Сначала ваш вариант, а потом я дам свой комментарий и разберем все по полочкам
Серый кот лежит на диване 🐱
Жить - Родине служить 🎖️
Красный цвет - опасный 🚩
Гнев - плохой советчик 😡
Жду ваши варианты 👌
Про_срок президента Зеленского
На просторах интернета с недавних пор возникают дискуссии на эту тему. Их можно часто наблюдать, а иногда и стать участником. В большинстве случаев наблюдаются ехидные насмешки без приведения каких-либо аргументов. Предлагаю раз и навсегда разобраться, закрыть этот вопрос и больше к нему не возвращаться.
Для начала определимся, какой же срок у президента Украины, он указан в конституции Украины, ст.103:
Президент Украины избирается гражданами Украины на основе общего, равного и прямого избирательного права путем тайного голосования сроком на пять лет.
Фиксируем 5 лет. Теперь вопрос, с какого момента он исчисляется? ст.104:
Новоизбранный Президент Украины вступает на пост не позднее чем через тридцать дней после официального объявления результатов выборов, с момента принесения присяги народу на торжественном заседании Верховной Рады Украины.
В СМИ узнаем, что Зеленский принес присягу и вступил в должность президента Украины 20 мая 2019 года.
Теперь достаем калькулятор, к 2019 прибавляем 5 лет, будет 2024 год, 20 мая которого должен был завершиться его срок. Однако, согласно конституции Украины, срок государственных органов продлевается в связи с введением военного или чрезвычайного положения, ст.83:
В случае окончания срока полномочий Верховной Рады Украины во время действия военного или чрезвычайного положения ее полномочия продолжаются до дня первого заседания первой сессии Верховной Рады Украины, избранной после отмены военного или чрезвычайного положения.
Было бы логично продлить и срок президента. Но для президента подобной статьи нет! Так же нет запрета на проведение выборов во время военного или чрезвычайного положения. Тут у нас первая дилемма:
Признаём Зеленского просроченным.
Утверждаем, что во время боевых действий нельзя проводить выборы, т.к. это ограничивает права граждан на волеизъявление.
Так как я хочу заработать 15 гривен, доказав, что Зеленский не просрочен, то выбираю второй вариант, вас не принуждаю, можете делать свой выбор:
Раз мы (я и депутаты Верховной Рады) решили, что выборы проводить нельзя, то вопрос, кто будет исполнять функции президента? Конституция предусматривает такой вариант, ст.112:
В случае досрочного прекращения полномочий Президента Украины в соответствии со статьями 108, 109, 110, 111 настоящей Конституции исполнение обязанностей Президента Украины на период до избрания и вступления на пост нового Президента Украины возлагается на Председателя Верховной Рады Украины.
Но это только в случае досрочного прекращения в одном из 4 случаев, ст.108:
Президент Украины исполняет свои полномочия до вступления на пост новоизбранного Президента Украины. Полномочия Президента Украины прекращаются досрочно в случае:
1) отставки;
2) невозможности исполнять свои полномочия по состоянию здоровья;
3) смещения с поста в порядке импичмента;
4) смерти.
Поэтому у нас возникает вторая дилемма:
Я продолжаю надеяться на свои 30 сребреников и выбираю второй вариант. Что же тогда делать в такой патовой ситуации? Т.к. я не являюсь украинцем и не должен вмешиваться в дела другого государства, мой президент Владимир Путин заявил, что с этим вопросом должны разобраться сами украинцы. У них есть государственный орган, который может решить этот вопрос легитимно - Конституционный Суд. Зеленский туда обратился? Нет, Офис Зеленского отказался обращаться в КС насчет легитимности президента.
В итоге у нас остаётся третья и главная дилемма:
Разбираемся вместе: строки в golang
Один из постов серии «Разбираемся вместе«: представляет из себя разбор определенной темы лично мной в целях улучшения понимания и возможно, получения фидбека от более опытных людей.
* Этот пост в совокупности с комментариями может помочь кому-то лучше понять разбираемую тему или сделать более подробный разбор на базе него.
* Этот пост не служит инструкцией, курсом или документацией, где гаранитируется 100% достоверная информация по озвученной теме — автор учится сам, так что ошибки возможны.
Строка (string) — это базовый (basic) тип данных, который представляет из себя неизменяемую последовательность байт, представленных в кодировке UTF-8.
Строки должны быть заключены в двойные кавычки.
Одинарные же кавычки представляют отдельный символ, который в Go представлен типом rune (псевдоним int32).
str := "A"
fmt.Println(str) // Выводит A
char := 'A'
fmt.Println(char) // Выводит 65 — символ это в первую очередь код Unicode
Про кодирование строк
Unicode — это стандарт, который определяет уникальные коды для каждого символа, независимо от используемой системы или языка.
Unicode — это также система кодирования символов, которая включает в себя огромный набор символов, каждый из которых имеет свой уникальный код. Эти коды называются Unicode code points.
UTF-8 (8-bit Unicode Transformation Format) — это один из способов (или схем) кодирования символов Unicode в последовательности байт.
Это позволяет эффективно хранить символы в памяти и передавать их по сети.
При кодировании в формате UTF-8 каждый символ может занимать от 1 до 4 байт, в зависимости от его позиции в стандарте Unicode.
Символы из ASCII (U+0000 до U+007F) кодируются одним байтом.
Символы из более широких диапазонов Unicode (например, кириллица, китайские иероглифы, эмодзи) могут занимать 2, 3 или 4 байта.
Индексация строк
Индексация строки по умолчанию работает с байтами, а не с символами.
При обращении по индексу, возвращается тип byte.
Это отлично работает для символов ASCII, которые занимают 1 байт.
Для символов других алфавитов (например, кириллицы) через индексацию возвращается только первый байт, что может вызвать искажения при выводе символов.
Подробнее
Символы английского алфавита (символы ASCII) занимают 1 байт пространства.
то есть числовое представление символа ASCII, его код Unicode, умещается в 1 байт.
Поэтому каждый отдельный символ ASCII (вернее его код) можно получить через индекс.
s := “string”
fmt.Println(s[0]) // Выводит 83 — код символа в Unicode тип byte
fmt.Println(string(s[0])) // Выводит s — символ алфавита тип string
Делается каст типа byte в строку, чтобы привести символ в человекочитаемый вид.
Символы других алфавитов (или эмодзи) могут занимать более 1 байта. Поэтому через индекс нельзя получить полностью код Unicode. Вернется лишь значение первого байта.
Например, символы кириллицы занимают 2 байта пространства — числовое представление символа кириллицы, его код в Unicode не вмещается в 1 байт, поэтому происходит разделение на 2 байта.
s := “Привет”
fmt.Println(s[0]) // вернет Ð — код непонятен для кодировки utf-8, так как первый байт символа содержит лишь часть кода Unicode
символ кириллицы занимает 2 байта, через индекс забирается только первый байт, что искажает целевой символ
если взять срез fmt.Println(s[0:2]) // возвращается П — забираются первые 2 байта, которые представляют из себя код и код автоматически декодируется в понятный человеку символ.
Как работать с символами строк
Чтобы корректно работать с символами, нужно преобразовать строку в срез типа []rune.
Срез []rune представляет строку как последовательность Unicode-кодов символов.
s := “Привет”
runes := []rune(s)
fmt.Println(runes[0]) // 1055 (код символа П в Unicode)
fmt.Println(string(runes[0])) // каст кода П в строку
теперь каждый символ кириллицы правильно переведен в тип rune, что представляет код Unicode
Длина строки
Так как строки в Go представлены как последовательность байт, и их длина измеряется в байтах.
Если передать строку в функцию len(s), функция вернет размер строки в байтах.
Каждый отдельный английский символ (ASCII) занимает 1 байт памяти и размер строки в байтах включающий только ASCII символы будет равен длине строки.
Может возникнуть неточность, если строка состоит из символов другого языка или включает эмодзи, в этом случае размер строки будет превышать фактическую длину, так как символы других алфавитов занимают больше 1 байта пространства.
Для того чтобы получить количество символов (вместо байтов), можно использовать пакет unicode/utf8.
import “unicode/utf8”
s := “Это строка”
fmt.Println(len(s)) // 19
fmt.Println(utf8.RuneCountInString(s)) // 10
Еще один способ получить длину строки (количество символов) это сделать каст строки в срез с элементами типа rune.
s := “Это строка”
fmt.Println(len([]rune(s))) // 10
Эти два способа гарантированно вернут правильное количество символов в строке, даже если в ней содержатся символы разных алфавитов.
Литералы строк
Литерал — это фиксированное значение, напрямую указанное в исходном коде программы.
Литерал представляет собой синтаксическую конструкцию, которая интерпретируется компилятором или интерпретатором как экземпляр определённого типа данных.
С помощью литерала компилятор или интерпретатор понимает, с каким типом данных работает, анализируя его синтаксическое представление (например, кавычки для строк, числовой формат для целых и вещественных чисел, фигурные скобки для коллекций и т.д.).
Литерал строки — это текст в исходном коде программы.
Кавычки, которые окружают литерал строки, — это синтаксическая часть языка Go, они нужны для обозначения строки.
С помощью двойных кавычек, компилятор golang поймет, что он работает со строкой.
Если в значении строки требуются двойные кавычки (например, для цитаты), их нужно явно указать и экранировать в самом литерале строки.
Значение строки — это результат выполнения программы, отображаемый в терминале или другом выходном потоке, без включения кавычек.
Управляющие символы
Для форматирования строк и работы с особыми символами в Go используются управляющие символы.
Управляющие символы начинаются с обратного слеша (\), за которым следует другой символ, определяющий их действие.
Они используются для добавления специальных символов, которые невозможно напрямую ввести в строку, либо для экранирования тех символов, которые иначе воспринимались бы как часть синтаксиса.
Примеры управляющих символов в Go:
\n — перевод строки
\t — символ табуляции
\f — подача страницы
\\ — обратный слеш
\" — экранирование двойной кавычки
\' — экранирование одинарной кавычки
Многострочная печать
Размещение строк в нескольких рядах делает текст более понятным и упорядоченным, позволяет форматировать его как письмо или сохранить разрывы строк в стихотворении или тексте песни.
Для создания строк, отображаемых на нескольких рядах, их нужно заключить в обратные апострофы.
В строках, заключенных в обратные апострофы, не требуется экранировать символы. Например, символы \ или кавычки (") можно использовать без обратного слэша.
Такие строки называют "сырыми" (raw string literals), так как они сохраняют текст в его исходном виде без обработки управляющих символов.
text := `This is a
multi-line string.
It preserves line breaks and spaces.`
Конкатенация
Оператор + используется для соединения двух строк.
s1 := "Hello, "
s2 := "world!"
s3 := s1 + s2
fmt.Println(s3) // "Hello, world!"
Эта операция создаёт новую строку, которая является результатом соединения исходных строк.
Важно понимать, что строки в Go неизменяемы, поэтому при использовании операции + возвращается новое значение, а не изменяется одна из исходных строк.
Пакет strings
Встроенный пакет, который предоставляет функции для работы со строками в кодировке utf-8.
с полным набором функций можно ознакомиться в документации пакета, тут разберем некоторые
strings.Contains()
Эта функция проверяет, содержится ли подстрока в строке.
Возвращает true, если строка найдена, и false — если не найдена.
import "strings"
s := "hello world"
fmt.Println(strings.Contains(s, "world")) // true
fmt.Println(strings.Contains(s, "go")) // false
strings.ToUpper() и strings.ToLower()
Эти функции позволяют преобразовать строку в верхний или нижний регистр.
import "strings"
s := "Hello"
fmt.Println(strings.ToUpper(s)) // "HELLO"
fmt.Println(strings.ToLower(s)) // "hello"
strings.Trim()
Функция strings.Trim() позволяет удалить указанный вторым параметром символы с начала и конца строки.
import "strings"
s := " Hello, world! "
fmt.Println(strings.Trim(s, " ")) // Выведет "Hello, world!"
strings.TrimSpace()
Можно также использовать strings.TrimSpace(), чтобы удалить только пробелы.
strings.Split()
Функция strings.Split() разделяет строку на подстроки по заданному разделителю и возвращает срез строк.
import "strings"
s := "a b c d"
result := strings.Split(s, " ")
fmt.Println(result) // [a b c d]
strings.Join()
Функция strings.Join() объединяет срез строк в одну строку с заданным разделителем.
import "strings"
slice := []string{"a", "b", "c", "d"}
result := strings.Join(slice, "")
fmt.Println(result) // "abcd"
strings.Replace()
Эта функция позволяет заменить все или ограниченное количество вхождений подстроки в строке на другую строку.
import "strings"
s := "hello world"
result := strings.Replace(s, "world", "Go", -1)
fmt.Println(result) // "hello Go"
-1 все вхождения
range
range — это ключевое слово для перебора коллекций в цикле.
При каждом проходе цикла range возвращает два значения:
индекс начального байта символа строки
индекс элемента (массив или срез)
ключ при работе с картами
и затем соответствующее значение из коллекции.
Со строками ключевое слово range используется для итерации и извлечения каждого символа (rune) из строки.
Это позволяет корректно обрабатывать многобайтовые символы в строках.
s := "string"
for i, r := range s {
fmt.Printf("%d: %c\n", i, r)
}
В этом примере i — это начальный индекс байта в строке, а r — это сам символ (rune).
fmt.Sprintf()
Аналог fmt.Printf(), но результат сохраняется в строку, а не выводится в консоль.
str := fmt.Sprintf("Hello, %s!", "world")
fmt.Println(str)
Тема: ВЗАИМООТНОШЕНИЯ
💛Вопрос: Чем привлекательны плохие мальчики и девочки?
Ответ: ты видишь что-то в мерзавце, что есть в тебе самой, за одним исключением - он умеет совладать с этой дурной частью, идёт в прорыв сквозь чужие мнения и заявляет о себе таким образом, который тебе нравится, и ты тянешься к нему, тк тебе кажется, что ты будешь:
1. защищена с ним от всего вокруг, он сможет за тебя постоять.
2. научишься этому тонкому мастерству не принимать мир близко к сердцу. Его манера тебе по душе, и ты цепляешься к нему, что бы обучиться(сама не понимая)
Часто бывает, что нам кажется что мы такие идеальные по сравнению с ним, и нам нравится это чувство. Думаем, что он увидит и захочет соответствовать. Нам нравится чувство нормальности и совершенности рядом с несовершенным человеком(рядом с ним меня точно не осудят, разве что за отношения с ним, но это даже хорошо, ведь я тут идеал.)
На самом же деле мы сами не совершенны и мечтали бы действовать как он, что бы суметь постоять за себя. Но пока не можем, поэтому нашли того, кто может, и хорошо если получилось замутить с ним. Вот почему мы влюбляемся в плохих мальчиков. Потому, что хотим научиться от них, или очаровать их так, что бы переложить всю хню от мира с себя на него!))
💛Но почему тогда позже мы обзываем этих парней грубостями и присваиваем им цену в грош?
Всё просто. Мы изначально ангельски уверены, что это он таков с остальным миром, но конечно же не со мной))) Наивные дурочки/ачки.
💛А оскорбляешь зачем? А затем, что он не поступил с тобой так, как ты планировала, а продолжил жить в своей манере.
С чего ты взяла что ты исключение? И с чего ты взяла, что он тебе что-то должен? Человек привык жить так. Может быть он нарабатывал своё поведение годами(так и бывает всегда), так же встречаясь со стервами, обжигаясь, но учась у них(безсознательно.) И сейчас он должен всё бросить и быть марионеткой в твоих руках?)) Не смеши, детка
⚜️«Инь ☯️ Ян везде. Просто разные Инь и разные Ян.» ©️мама Антона @Suvorkin
💛А как же быть когда сходятся одинаковые? Мы же тоже потом обзываемся!
А тут вот в чём дело. Просто эти качества, которые присущи вам двоим, в себе ты считаешь минусами. Вот и орёшь на него потом))) А ещё, таким образом Космос показывает нам над чем нам нужно поработать в себе.
Потом, если проработать, то тебя не прельстит этот человек больше, или ты просто не будешь так явно реагировать на его такие проявления.
И это не значит, что вы оба должны работать над собой. А потому, что его может быть устраивают эти его качества, может он вообще осознаннее и понимал изначально кого искать. Тут нет его вины, что тебе там что-то не нравится. Это как раз тебе и прорабатывать своё!
⚜️«Если тебя не любят, люби себя за двоих.» ©️@Suvorkin
⚜️«Я не психолог. Я просто говорю свою точку зрения на позицию.»©️@Suvorkin
⚜️«Я люблю разговоры ни о чём. Вся жизнь часто ни о чём. Мелкая моторика.»©️@Suvorkin
Статья "КАК УСПЕШНО НЕ ВЫХОДИТЬ ИЗ ДОМА"
Длиннопост о том как выбрать источник дохода в интернете.
КАК УСПЕШНО НЕ ВЫХОДИТЬ ИЗ ДОМА
или
ИНТЕРНЕТ ИСТОЧНИКИ ДОХОДА
Что интернет делает с нами сейчас? У большинства забирает самый драгоценный ресурс - Время. А если все перевернуть? Эта статья для тех кто ценит время и хочет заставить интернет работать на себя. В этой статье описаны основные направления заработка в интернете с практичными советами и полезными ссылками. Как у настоящих самураев все направления разбиты на пути. Здесь разобраны пути Фриланса, Стартапа, Краудфандинга, Криптовалютчика, Писателя, Трейдера, Хозяина, Геймера и Мастера. А по какому пути пойти – решать вам.
Сегодня лучше зарабатывать в интернете потому что проще и быстрей. Сейчас Интернет везде. Наши дома окружены интернетом, когда мы в пути - интернет работает в наших карманах, когда мы в офисе или в в кафе – нас везде ожидает доступный вайфай. Популярность интернета заключена в возможности найти каждому свое место. Женщина или мужчина, 15 или 65 лет, в любой точке мира. Вход в интернет занимает секунды. Сейчас он доступен и прост как никогда. Давайте воспользуемся этим. Каждый из нас обладает интересными и ценными знаниями. Не хватает нам только уверенности. Можно проживать интернет листая чужие ленты жизни. Бесполезно тратить возможности бездонного титана. А можно раскручивать этот маховик чтобы от него стали отлетать золотые монетки. Все зависит от нас. Если вам это подходит, то отбрасываем страхи, берем интернет и ищем свой путь по дорожным картам основных направлений, где зарыты настоящие интернет сокровища.
ПУТЬ ФРИЛАНСА
Фрилансер, это свободный специалист. Фрилансером может стать абсолютно каждый. Будь специалистом любого своего дела и регистрируйся на самых популярных площадках фриланса. Знаешь математику, физику, химию – можешь быть репетитором. Знаешь английский, немецкий, испанский – можешь стать переводчиком. Знаешь языки программирования – можешь стать разработчиком IT-проектов. Здесь зарабатывают ровно столько сколько работают, каждому по способностям, каждому по труду. Из плюсов – вы сами себе начальники, сами определяете сколько хотите работать, как и стоимость вашей работы, но учитывайте что от этого будет зависеть уровень вашего дохода. Кадровый рынок фриланса большой, готовьтесь что другие фрилансеры будут бороться вместе с вами за лучшие заказы.
Средний доход фрилансера (из расчета в месяц): 40 000 рублей. Наиболее востребованы дизайнеры и программисты.
Главное найти друг друга и договориться.
ПУТЬ СТАРТАПА
Есть хорошая идея и знаете как ее реализовать? Вам дорога в стартап. Этот путь дается лучше тем кто верит в свои силы и имеет достаточно знаний и опыта. Самое главное правило стартапа – вы должны верить что ваш стартап будет по-настоящему полезен обществу. Если вы не хотите купить то что собиратесь сделать сами у себя – значит не надо заниматься этим в принципе. Startup буквально переводится как “старт вверх”. Хорошо “стартануть” можно с интересной и полезной идеей, способной завлечь людей и инвестиции. На хорошие стартапы слетаются бизнес-ангелы с большими капиталами и неумным желанием инвестировать в интересную идею. Смотрите чтобы эти «птицы» не унесли вашу идею от вас далеко – страхуйтесь патентами и NDA.
Разберем основные плюсы IT-стартапа. Без офиса: Достаточно иметь одного-двух программистов с ноутбуками, которых не обязательно даже знать в лицо. Найти их можно на сайтах фриланса, а выбрать по рейтингам и подходящему опыту. Договор с ними тоже можно заключить через интернет. Невидимость не мешает продуктивно работать друг с другом и отслеживать каждый этап работы с помощью умных удобных приложений, как например Trello (https://trello.com) - помощник для организации чего угодно с кем угодно. Создал один раз и работает на вас. Приложение или игру нужно создать всего один раз и потом продавать всю жизнь любому человеку без встреч, разговоров и заключений договоров. Также не надо вкладываться отдельно в аренду помещений, юристов и службы безопасности, а сами разработчики могут работать даже не выходя из дома. Скорость. Разработка Мобильного приложения можно создать за один месяц – если у вас на старте есть деньги на целую студию разработчиков. Если ваш стартап не основам на текущем хайпе, лучше не торопиться и играть в долгую. Так вы избежите крупных затрат в самом начале. Долго ли коротко, но самое главное иметь хорошую идею.
Быстрый возврат инвестиций: Для того чтобы купить приложение не нужно идти в Банк или куда либо, достаточно нажать одну кнопку на телефоне и платеж пройдет, т.к. у всех платежеспособных людей есть телефоны, и к ним привязаны их пластиковые карточки. Отдельный плюс разработки мобильных приложений и игр – их просто и быстро найти в 2х самых крупных магазина приложений: AppStore и Google Market. Мировой интерес к IT. За успешными приложениями Instagram, MRSQRD, SnapChat и Prisma в начале стояли лишь 2 разработчика, 2 компьютера и одна отличная идея. Потом их раскупают Facebook, Microsoft и Google за десятки миллионов и даже миллиарды долларов. Сверхдоходность. Мобильные приложения стоят около доллара. Но этот доллар должен заплатить каждый, кто хочет использовать хорошее приложение. На данный момент количество пользователей интернета в мире составляет 3,2 миллиарда человек. И каждый может быть достать ваше приложение за пару секунд. Достаточно хорошо настроить Сэйлзы.
Да, далеко не все стартапы успешно стартуют. Никто не предлагает перебегать дорогу с завязанными глазами. Изучите нужные материалы, присмотритесь к рынку, делайте взвешенные шаги и очень может быть, у вас все получиться. Главное необходимо банально верить в себя и набраться огромного терпения. Готовьтесь просидать в минуса до полугода в период создания и раскрутки проекта. Ставьте перед собой грандиозные планы, но стремитесь в начале достичь точки безубыточности, которую вы сами можете приблизить если стараться не отступать и не сдаваться.
Средний доход от стартапа (из расчета в месяц): возможные пол года-год в минусах. Далее от 100 000 до 1 000 000 рублей в месяц. Наиболее востребованы старатапы в it-сфере, онлайн-школы, сфера обслуживания и продуктов питания.
Существует не мало материалов, лекций и книг как правильно открывать стартапы. Можно начать изучение стартап направления с книг:
«Стартап» (Гай Кавасаки)
«Бизнес с нуля» (Эрик Рис)
«Революция: Как построить крупнейший онлайн-банк в мире». Олег Тиньков
«Стартап. Настольная книга основателя» (Стив Бланк и Боб Дорф).
ПУТЬ КРАУДФАНДИНГА
Если у вас есть хорошая идея, но нет достаточных для этого средств - добро пожаловать на площадки краудфандинга. Краудфандинг это народное финансирование. Любой человек в интернете, которому понравится ваша идея, может инвестировать деньги в ваш проект. Варианта краудфандинга по большому счету всего два. Это либо безвозмездное финансирование для поддержки хорошей идеи которая по мнению инвестора может привнести в мир что-то достойное. Либо инвестор будет вкладывать деньги в качестве аванса на покупку вашего будущего продукта. Такому инвестору вы должны будете предоставить что-то ощутимое в конце производственного цикла. Бывает что проект не успевает собрать достаточно денежных средств в назначенный срок, тогда все деньги мира возвращаются обратно вносителям. Вспомним про двуликих бизнес ангелов и здесь. Они могут как стать самыми крупными инвесторами, так и забрать вашу идею с собой. Оберегайте себя патентами и соглашениями о конфиденциальности.
Сбор средств на площадках КФ начинается в среднем с 100 000 руб. и доходит до 3 000 000 руб.
ПУТЬ КРИПТОВАЛЮТЧИКА
10 лет назад некто Сатоши Накамото создал первую криптовалюту. Валюту, которая не может существовать за пределами интернета. После этого у всего мира сорвало крышу. Они не привязаны ни к какому государству. Их уникальность в том, что она конечна и получить ее можно интернет трудом. Нюансы, на которые стоит обратить внимание: курс криптовалюты имеет большую волатильность (скачет в разные стороны), для создания (майнинга) любой криптовалюты необходимы сильные компьютерные мощности (особенно это касается видеокарты), и третий нюанс – принимать криптоденьги далеко не все, но вы сможете обменять их на любую другую валюту при желании через банковских брокеров. Законодательство пока не регулирует данную сферу, но уже задумывается об этом. Поэтому занимаясь криптовалютой, внимательно следите за новостями рынка. Из плюсов для хозяев электроферм – один раз купил-установил и больше делать ничего не надо, машина сама будет производить необходимые манипуляции для насыщения криптокошелька.
Если вы потратились на хороший компьютер и видеокарту, то можете майнить в месяц от 2 до 7 тыс. руб. в зависимости от валюты и ее курса с одного рабочего места не считая затрат на электричество.
ПУТЬ ПИСАТЕЛЯ
Кажется в интернете уже все сказано и написано. Но до сих пор есть люди и ресурсы, которые ищут писателей и платят деньги за хорошие статьи. Если вы писатель, вас нужно сначала заметить. Прокачивайте писательские скилы где угодно в сети. Пишите рецензии к фильмам и играм. Главное, чтобы это было клево. Участвуйте в интересных для вас спорах и дебатах в соцсетях.
Если ваша жизнь подарила вам благодать материала, а рука не боится пера – пробуйте себя на этом поприще. Будьте в своих статьях интересными и яркими. Будьте в тренде или в своей изумрудной искренности. Вызывайте обсуждение вокруг ваших материалов, и тогда вы станете более заметны для уважаемых изданий и порталов.
Работа для писателя раскидана по всему интернету. Время от времени популярные издания выдают задания и темы в поиске съедобных статей и форматных авторов. Пытайте там ваши шансы. Шерстите сайты известных порталов, online журналов. Следите за известными личностями в сетях. За них тоже кто-то должен вести аккаунт. Известные люди частенько страдают тщеславными амбициями, поэтому и приходят к мысли написания книги о себе самих. Тут вы и пригодитесь. Писательская система хорошо работает в формате “кукушка хвалит петуха, за то что хвалит тот кукушку”. Вступайте в авторские форумы и учитесь друг у друга чему-то новому и связями. Дождитесь когда взаимные рекомендации долетят куда вам надо. Уметь писать в интернете это чуть меньше половины дела. Надо уметь еще себя продавать чтобы капитализировать свои труды. Параллельно ищите online порталы вашего формата, ненавязчиво посылайте на e-mail ваши статьи. В промежутках раскрутки снова не забывайте писать тексты, чтобы набивать руку. Слава интернету, здесь есть где развернуться, так что ищущий в поисковике до найдет всегда. Да прибудет автору сила цифровых чернил!
Доход: 500 руб. за 1000 символов стандарт хорошего гонорара. Чем больше автор набирает вес доверия и узнаваемости, тем вероятней к расширению его личный прайс.
ПУТЬ ТРЕЙДЕРА
Трейдер это торговец в устоявшемся значении ценными бумагами. В отличии от брокера, трейдеры “играют” со своими деньгами. Смысл трейдерства – понять что лучше купить сейчас, чтобы потом выгодней продать. Покупать и продавать ты можешь от валюты, до золота и акций компаний. Игра трейдера неограниченна по времени и по сумме. Поэтому здесь огромные прибыли и огромные потери. Учат трейдерскому мастерству везде и с удовольствием сами площадки, на которых вы и будете испытывать на прочность свой капитал. На курсах вы заплатите деньги чтобы научиться их не потерять в дальнейшем. Вас познакомят с азами трейдерства, основными площадками, правилами игры и расскажут о том, что есть сигналы и триггеры и нужно уметь ими пользоваться. Но не забывайте, что основная правда успешного трейдерства заключена исключительно в человеческом везении. Каждый ваш день на бирже это битва интуиции. Тем не менее готовиться к экспромтам нужно заранее.
Будьте внимательны словно вы на минном поле, которое находится в казино. Нет разницы дня и ночи, все 24/7, и вам с удовольствием поднимают кредитные лимиты. Первыми гибнут импульсивные и азартные. Каждая минута здесь главная и решает закроешься ты заработав или потеряв все что до этого было. Больше всех в этой игре выигрывает казино, в вашем случае это брокер. Но если вы неплохой игрок в покер, можете попробовать и здесь свои силы. Если решились проверить нервы на прочность, то «Искусство войны» Сунь Цзы и «Биржа на кончиках пальцев» Виктор Ильина и Валерия Титова должны стать вашими настольными книгами.
Доход: увеличить вложенные средства на 20% за месяц получается у опытных и успешных трейдеров. А в начале вас ждут 5-10% при определенной степени удачи.
ПУТЬ ХОЗЯИНА
Свой бизнес – это свой бизнес. Бизнес может очень хорошо существовать и в интернете. Знаете где купить, так чтобы потом выгодно продать? Вперед к созданию собственного интернет-магазина. Сегодня интернет климат наиболее благоприятен. Не надо обладать специальными знаниями чтобы купить домен, хостинг и создать свою трейд площадку. Достаточно заплатить небольшие деньги и вам предоставят доступ к виртуальным инструментам для конструирования собственного виртуального магазина таким как вам желается. Старайтесь внимательно изучить рынок чтобы обнаружить там свою нишу и своего покупателя. Найдите баланс между низкую закупочной ценой и возвратами некачественного товара, продумайте не дорогую, но быструю логистику. От этих моментов зависит рентабельность вашего бизнеса. Будьте готовы к длительным срокам окупаемости. Прогнозируйте наихудшие варианты и по ним планируйте привлечение необходимых средств. Первая ловушка – на пути хозяина – это кассовые разрывы из-за оптимистического подхода в планировании. Расписывайте каждый шаг. Как можно чаще делайте brainstorm вашего бизнеса для поиска и устранения слабых сторон. Улучшайте свой бизнес по ходу движения.
Доход: Большинство интернет-магазинов имеют доход до 50 000 руб. в месяц, редкие выходят за пределы 100 000 руб., хотя это дело усердия и времени.
ПУТЬ ГЕЙМЕРА
Путь виртуального воина. Если вы берегли броню в бою, и ваш железный конь прошел не одну схватку в танковых сражениях, можно набраться духа чтобы продать боевого товарища другим фанатам за хорошее вознаграждение. Конечно, такой вид деятельности полноценной работой не назовешь, скорее это похоже на подработку. Да и времени отнимает довольно много. Главный плюс пути геймера – полное удовольствие от процесса. Современные игры заполнены артефактами. Чем сложнее их достать – тем ценнее их продать. В продажу идет игровая валюта, прокаченные аватары, аккаунты, ключи, танки и прочие уникальные фишки. Некоторые игроки умудряются продавать все наигранные аккаунты одним крупным чеком и помимо денег получают в жизни дополнительное время.
Доход: артефакты стоят весьма по разному. Самый дешевый и простой может стоить 100 рублей, самый дорогой, например Мурчаль в WOW достигает цен на Ebay до 3 500 долл. США. Крутые аватары в DOTA2 стоят 100 000 руб., но человек мог на них потратить и 5000 часов. А время, как мы помним, все еще самый ценный артефакт реальной жизни.
ПУТЬ МАСТЕРА
Если вы достойный звания фотограф, дизайнер, повар, адвокат, художник или модельер – вы должны рассказать об этом интернету чтобы значительно увеличить клиентскую базу. Если вы хотите получать за ту же самую работу в три раза больше, нужно максимально усиленно заняться раскруткой себя в интернете. Ваше имя должно стать брендом. Начните со своих страниц социальных сетей. Удалите все не относящееся к вашему делу информацию, обязательно укажите и закрепите то чем вы занимаетесь на главной странице. Дополняйте свои профили ежедневно новой интересной информацией по теме вашей деятельности, заманивайте интересным контентом, хорошими статьями, лайфхаками, подарками и прочими плюшками. Не экономьте на дизайне и оформлении – ваши потенциальные клиенты это чувствуют. Усиливайте посещаемость – рекламируйте себя. Используйте для этого ваши Соцсети, они уже приготовили для вас решения по таргетированной рекламе. Это весьма полезные инструменты для раскрутки и получения полной информации по таргетированному охвату вместе со статистикой просмотров и вовлеченности пользователей.
Доход: Соизмеримый доход как от профессиональной деятельности в реальной жизни, умноженный на заинтересованную публику интернет сообщества.
Сегодня, одна из самых трендовых монетизаций профессиональных знаний и опыта ведет к созданию онлайн школ. Это старый европейский тренд и новый русский хайп одновременно. Люди с удовольствием идут обучаться в интернете новым знаниям и готовы платить за это хорошие деньги. Упакуйте свой профессиональный опыт в видеоролики, выпустите один бесплатно в качестве тизера, продавайте остальные за деньги. Главное, если найти вас помог сайт, раскаченный саморекламой, то доверие, как долгосрочный капитал, можно заслужить исключительно профессионализмом.
Если в конце нужны выводы, то они будут такие. Можно ни во что не верить и смеяться над всеми лежа на матрасе. Главное, чтобы матрац не стал вашей льдиной, отколовшейся от остального прогрессивного мира. Потому что это весело только пока кушать не хочется. А для тех, кто все-таки любит хорошо поесть и хорошо жить, можно пойти и попробовать что-то сделать. А интернет может стать вашим лучшим помощником. Не бойтесь узнать сколько стоит ли ваша идея и испытать свои знания и накопленный опыт. Пусть получаться сразу все не будет, но упрекать себя в бездействии не будете, поскольку значительно расширите свои знания, круг интересных знакомств вместе с бесценным опытом собственной практики. А еще станете очень богатыми людьми. Не исключено что история успеха ждет именно вас. Позвольте себе действовать. Используйте интернет с умом, заставьте его работать на себя – тогда никто вас уже не сможет остановить.
Автор Мартынов Дмитрий
Разобрали пол. Как быть дальше?
Мы тут решили сделать в комнате новый пол. Посидели на форумах и решили, что разберем и сделаем цементную стяжку. Но, по ходу дела вскрылись особенности пола. Теперь думаем, как быть.














