Случайны выбор дневника Раскрыть/свернуть полный список возможностей


Найдено 45347 сообщений
Cообщения с меткой

боль - Самое интересное в блогах

Следующие 30  »
strange_devushka

Снова здравствуй, мой жестокий мир!

Воскресенье, 24 Июля 2016 г. 05:02 (ссылка)


Я чертовски запуталась...

Замкнулась внутри себя.



Настроение просто прыгает вверх - вниз. Точнее как - полный упадок, чуть-чуть привожу сама себя к мысли что пора из этого всего выбираться, день или два держусь, а затем еще больший мрак.



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

Абсолютно незнакомый человек. Смог понять и вытянуть из меня то, что я сама в себе прятала.

Как гнойный нарыв... Вскрыли и вычистили.

Но походу душу тоже надо дезинфицировать, иначе начнется повторное заражение.



Как ты выразился терапию нужно продолжать.



Ты выделил мне четыре часа из своего сна. И смог помочь.



Следующий день за нашим первым с тобой диалогом был прекрасен, я была в этом уверена. Вот что я тебе тогда писала:

"Я очень стараюсь не печалиться, порой получается хорошо. Но иногда бывают срывы.

Это что-то вроде отчета за день)))

Весь день вчера держалась молодцом, была довольна. Думала о том, что как же просто бывает поделиться с абсолютно не знакомым человеком и в тот же момент сложно этим же поделиться с близкими людьми. Не знаю даже почему. Посчитала это не правильным. Но когда легла спать, мои мысли опять ушли в дебри. Решила бороться со своим страхом показаться смешной и глупой. Высказала свои переживания мужу. Он был в шоке, что я молчала. С учетом того что он долго приучал меня делать то что я хочу и говорить то что думаю, а не то что вызвано условиями общественности. Он меня именно своей открытостью и привлек. Совершенно диаметральная противоположность мне. Походу я просто забыла про это.

Не знаю как определить в какой из моментов я замкнулась в себе. И забыла про все на свете.

Первые мысли – начала винить во всем работу, что погрузилась в бытие. Что начала прозябать свою жизнь. Что где-то даже жалко стало последних пару лет. Казалось, что я потеряла эти годы. Сейчас же такое ощущение что я очнулась от сна…

Очнулась от сна и включился МОЗГ. Какое нафиг потерянное время. Опыт есть опыт. Если я скажу что была несчастлива все это время – то я совру. Да, были плохие моменты, трудные. Но также были и хорошие и их предостаточно. И это есть жизнь. И это есть счастье. И это есть путь…"


 



Проходит время. День. И стоит мне опять быть откровенным с мужем. Но в этот раз открыто высказать свое недовольство, и в итоге... все скатилось до нуля. Он в гневе пробил дыру в стене.



Анализируя сейчас это все я наверное начинаю понимать почему я перестала говорить то что думаю. В опасении его гнева.



Может в этом причина, а может и нет. Не знаю. Запуталась.



 



Но вспоминая наш с тобой диалог, понимаю что нельзя опускать руки. И мне становится легче от такого глупого воображаемого диалога с тобой.



Я даже знаю что ты спросишь: Почему глупого?



Улыбаюсь.



 

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
Мечтающая_о_многом

Будто мама за ручку держит...

Суббота, 23 Июля 2016 г. 13:19 (ссылка)



2222299_81779396_large_z_c1b02896_1_ (700x525, 53Kb)




 


Вновь промокли от слёз ресницы,

Боль, как- будто металла скрежет.

В детском доме ребёнку снится -

Мама за руку крепко держит.



Взять бы душу связать на спицах,

В этом мире мы все невежды...

В детском доме ребёнку снится -

Мама за руку крепко держит.



Люди с детства привыкли злиться,

Повышая на близких голос....

Боже правый, у них не лица -

Пустотою чернеет космос!



Хочешь кофе ещё с корицей?

Чтобы думать о бедах реже.



... А вот деткам в детдоме снится,

Будто мама за ручку держит...


 



 


© Copyright: Ангелина Болотская, 2015

Свидетельство о публикации №115121006180


 


Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
света_М

народная медицина.

Пятница, 22 Июля 2016 г. 14:23 (ссылка)

Это цитата сообщения КРАСОТА_ЗДОРОВЬЯ Оригинальное сообщение

Подручные средства вместо таблеток

Подручные средства вместо таблеток (604x402, 64Kb)Для снятия головных болей и приступов мигрени
1. При головных болях, вызванных умственным переутомлением, рекомендуется принять теплую ванну или попарить ноги в течение 10-15 минут.
2. Если головная боль сопровождает простудные заболевания, нужно намазать ментоловым маслом лоб, виски, затылок и за ушами.
3. Сильную головную боль любого происхождения можно снять, смазав лоб и виски лимоном, перетертым с цедрой.
4. При мигрени смочите ватный тампон соком красной свеклы или лука и положите в ухо.
5. При хронических головных болях помогает следующий рецепт: взбить в стакане свежее яйцо и залить кипящим молоком. Все перемешать и выпить.

Компрессы

Горячий компресс от мышечной боли
Вам понадобятся: полотенце и горячая вода.
1. Нагрейте воду, не доводя до кипения. Сверните полотенце так, чтобы им можно было покрыть только ту область, на которую вы собираетесь сделать компресс.

Читать далее...
Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
rss_rss_hh_new

Страх и ненависть и пагинация

Пятница, 22 Июля 2016 г. 10:39 (ссылка)

А в чем проблема?



Типичная пагинация



Как бы нам не хотелось этого отрицать, практика показывает, что подавляющее большинство своего времени типичный iOS-разработчик проводит за работой с табличками. Проектирование сервисного слоя — это интригующе, разработка универсального роутинга в приложении — захватывающе, а от настройки гибких политик кэширования вообще крышу сносит, но работа с табличными интерфейсами — это наши серые будни. Иногда луч света все же попадает и в эту область, и вместо очередной возни с constraint'ами перед нами может встать задача реализации постраничной загрузки — или, как это модно называть в мобильных приложениях, infinite scroll'а.





Грузить сразу все новости, объявления, списки фильмов с удаленного ресурса как минимум не эффективно, поэтому в большинстве случаев сервер предоставляет клиентам различные механизмы разбития всего объема данных на части ограниченного размера.



Как говорится, so far so good. Мы загружаем первую партию данных, отображаем их в таблице, прокручиваем её до конца, загружаем следующую партию — и так до бесконечности. К сожалению — ну или к счастью, мы же любим вызов — на этом все только начинается.



В зависимости от сложности проекта и степени костыльности API, достаточно простая задача рискует переродиться в Нечто. Нечто именно с большой буквы, потому что это создание в итоге обретает свою собственную жизнь и начинает рушить судьбы всех, кто его коснется. Ближе к делу — приведу пример из реальной жизни, случившийся, тем не менее, в совсем абстрактном проекте.



Условия, с которыми нужно было работать:




  • любой из загруженных элементов может быть изменен с течением времени;

  • на стороне клиента нужно уметь прятать посты авторов из черного списка — учитывая, что сервер продолжает их возвращать;

  • несмотря на локальную фильтрацию, при запросе следующей страницы пользователь должен получить не меньше 20 новых элементов;

  • выдача целиком пересобирается раз в час — некоторые посты добавляются, некоторые — исчезают, и обязательно меняются все позиции в списке;

  • обращение к серверу идет не напрямую, а через CDN, что влечет за собой интересные артефакты;

  • единственный механизм постраничной загрузки, который может предложить сервер — это limit/offset.



Плохие новости — сделать в подобных случаях все правильно сложно. Хорошие новости — у меня в запасе есть целый структурированный арсенал костылей, который помогает справиться с большинством возникающих вопросов и проблем.



Декомпозиция



Сколь угодно сложная проблема или задача становится решаемой, если разбить её на ограниченное количество шагов. Наш случай не исключение. Чтобы понять принцип работы всей системы постраничной загрузки в вашем приложении достаточно декомпозировать её на несколько секций:




  1. Правила изменения количества элементов в выдаче:


    • Лента статична. Пример: Список заведений в редакционной подборке. Будучи один раз составленным, он уже не меняется.

    • Новые элементы добавляются строго сверху. Пример: История просмотра страниц приложения. В самом простом виде единственное её изменение — это добавление в начало списка новых просмотров страниц.

    • Любая часть выдачи может быть изменена. Пример: Список писем в почтовом клиенте. Пользователь может удалять, перемещать и получать новые письма, поэтому список может быть изменен на любой позиции.


  2. Правила изменения актуальности выдачи:


    • Выдача всегда остается актуальной. Пример: Все то же почтовое приложение. Элементы его могут меняться постепенно, нет строго детерминированной точки перехода из одного состояния в другое.

    • Выдача может быть переформирована в неопределенный момент времени. Пример: Новостное приложение с интеллектуальным ранжированием. Раз в час выдача новостей пересобирается и наиболее актуальные материалы перебираются в самый верх списка.


  3. Правила обновления контента:


    • Отображаемые данные не обновляются. Пример: Ячейки с названиями ресторанов. Смена названий настолько редка, что этой вероятностью можно смело пренебречь.

    • Отображаемые данные могут быть изменены. Пример: Ячейки со счетчиком лайков. С течением времени этот счетчик меняется — и нужно уметь обновлять эти данные для уже закэшированных элементов.




Задача реализации постраничной загрузки чаще всего делится на две крупные части: подгрузка данных вниз и обновление ленты, обычно совершаемое при pull-to-refresh. К каждой из этих задач требуется свой подход, целиком зависящий от приведенной выше схемы.



Костыли



Этот раздел — ключевая часть всего материала. Я собрал все костыли, которые вынужденно использовал при реализации сложного механизма постраничной загрузки на limit/offset.



Небольшой ликбез. Limit/offset — это наиболее часто встречающийся подход к реализации постраничной загрузки данных. Offset — это сдвиг относительно первого элемента. Limit — количество загружаемых данных.



Пример: пользователь хочет загрузить 10 новостей, начиная с двадцатой. offset: 10, limit: 20.


Подгрузка вниз / Лента изменяется



Если лента может быть изменена, не важно каким образом, то при попытке запросить следующую страницу мы можем столкнуться со сдвигом элементов вверх или вниз. Решение проблемы состоит из двух шагов. Первый относится к смещениям вниз. Представим ситуацию, при которой у нас уже загружена первая страница из пяти элементов. До следующего запроса структура данных на сервере изменилась и сверху выдачи добавились два новых элемента. Теперь при загрузке следующей страницы мы получим два элемента, которые у нас уже есть в кэше.



Подгрузка вниз / Лента изменяется



Ситуация может быть и хуже, если за время отсутствия синхронизации на сервер добавилось элементов больше, чем установлено в свойстве limit — тогда мы не получим ни одного нового элемента. Если в качестве offset'а мы будем использовать общее количество элементов в кэше, то застрянем в этой точке навсегда, так как продолжим запрашивать те элементы, которые уже были загружены.



Проблема решается достаточно просто. При получении очередной порции данных мы подсчитываем количество пересечений с закэшированным контентом — и в дальнейшем используем полученное значение как сдвиг offset'а. В приведенном выше примере этот сдвиг будет равен 2.



paging.startIndex = cachedPosts.count + intersections;
paging.count = 5;


Подгрузка вниз / Любая часть выдачи может быть изменена



Рассмотрим следующую ситуацию: мы загрузили страницу, но затем первые два элемента были удалены. Запросив следующую порцию данных, получаем дырку в два элемента. Если ничего не предпринять, приложение об этом ничего не узнает — и данные никогда не загрузятся.



Подгрузка вниз / Любая часть выдачи может быть изменена



Выход из этой ситуации — всегда запрашивать данные с наложением в один элемент. Если при получении данных мы не найдем пересечений — можно либо отменить результат запроса, либо повторить его с другими параметрами.



paging.startIndex = startIndex - 1;
paging.count = 5;


Небольшой лайфхак в копилку — если какие-то элементы в ленте потеряются, всегда можно сделать серьезное лицо и прочитать лекцию про интеллектуальное ранжирование данных, выполняемое на клиенте. Не поверят — покажите Facebook, у которых одна и та же выдача на каждом устройстве всегда выглядит абсолютно по-разному.


Подгрузка вниз / Выдача может быть реструктуризована в случайный момент времени



В таком случае самым простым вариантом реализации будет работа с так называемым слепком ленты. Под этим термином обычно понимают список идентификаторов всех записей выдачи. При первом открытии мы запрашиваем такой слепок и сохраняем его в базе, либо просто держим в памяти. Теперь для получения следующей страницы мы будем пользоваться не стандартным limit/offset, а более сложным запросом — просить сервер отдать посты по конкретным 20 идентификаторам.



NSRange pageRange = NSMakeRange = (startIndex, 20);
NSArray *postIds = [snapshot subarrayWithRange:pageRange];
[self makeRequestWithIds:postIds];


Даже если выдача неожиданно будет реструктуризована, нам это не помешает — мы работаем с тем слепком, который был актуален на момент первого запроса — и для клиента лента будет отсортирована точно также, как в момент первого открытия.



Подгрузка вниз / Выдача может быть реструктуризована в случайный момент времени



Обновление ленты / Элементы добавляются сверху



В этом случае нам в первую очередь необходимо уметь определять наличие дырок, образующихся в том случае, если со времени последней синхронизации было добавлено большое количество новых элементов.

Мы запрашиваем константное количество данных и проверяем наличие пересечений с данными из кэша. Если пересечения есть — все хорошо, можно продолжать работать в обычном режиме. Если пересечений нет — это значит, что мы пропустили несколько постов.



Обновление ленты / Элементы добавляются сверху



Что делать в этом случае — нужно решать для каждого конкретного приложения. Можно сбросить все данные, кроме запрошенных пяти элементов. Можно продолжать подгружать элементы сверху постранично, пока не будут обнаружены пересечения.



if (intersections == 0) {
[self dropCache];
}


Обновление ленты / Любая часть выдачи может быть изменена



У проблемы есть два способа решения:




  1. Сервер отдает diff’ы изменений в ленте, к примеру, основываясь на сохраненном Last-Modified последнего синхронизированного состояния выдачи. Параметр Last-Modified мы получаем из заголовков ответа сервера. Клиенту в таком случае останется просто применить эти изменения на состояние базы.



    for (ShortPost *post in diff) {
    [self updateCacheWith:post];
    }



  2. Если сервер так не умеет — приходится снова писать дополнительную сотню строк на клиенте. Нам нужно получить слепок постов (прямо как в одном из предыдущих пунктов) и сравнить его с текущим состоянием хранимых в кэше данных.



    for (ShortPost *post in snapshot) {
    if (![cachedPosts containsObject:post]) {
    [self downloadPost:post];
    }
    }
    for (Post *post in cachedPosts) {
    if (![snapshot containsObject:post]) {
    [self deletePost:post];
    }
    }





Все отсутствующие в слепке элементы — удалить, все недостающие — загрузить.



Обновление ленты / Меняется сортировка



Если выдача была реструктуризована, мы должны об этом узнать. Проще всего это сделать, послав на сервер head-запрос и сравнив параметры etag или Last-Modified с сохраненными значениями.



NSString *lastModified = [self makeFeedHeadRequest];

if (![lastModified isEqual:cachedLastModified]) {
[self dropCache];
[self obtainPostSnapshot];
[self obtainFirstPage];
}


Если результат сравнения отрицательный — состояние кэша сбрасывается, слепок id обновляется.



Обновление ленты / Элементы выдачи могут меняться



Если элементы списка содержат изменяющиеся со временем данные, вроде рейтинга или количества лайков — их нужно обновлять. Решение проблемы, в принципе, коррелирует с одним из предыдущих пунктов — мы работаем либо с diff’ом, возвращенным сервером, либо запрашиваем краткие структуры данных, содержащие только значимые поля. После этого вручную обновляем состояние элементов.



for (NSUInteger i = 0; i < cachedPosts.count; i++) {
Post *cachedPost = cachedPosts[i];
ShortPost *post = snapshot[i];

if (![cachedPost isEqual:post]) {
[cachedPost updatePostWithShortPost:post];
}
}


Главное — максимально сократить количество передаваемых данных.



Советы на будущее



В завершении хочу дать несколько советов разной степени полезности.



Совет 1, очевидный



Бывает очень удобно иметь специальный объект, описывающий текущую выдачу. Назовите его списком, категорией, фидом — не важно.



@interface Feed: NSObject

@property (nonatomic, copy) NSArray *posts;
@property (nonatomic, copy) NSArray *snapshot;
@property (nonatomic, assign) NSUInteger offset;
@property (nonatomic, assign) NSUInteger maxCount;
@property (nonatomic, strong) NSDate *lastModified;

@end


Он может содержать текущий offset, максимальное количество элементов ленты, дату Last-Modified, слепок id — все, что нужно для описания списка элементов.



Совет 2, архитектурный



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

Отделяйте логику запроса данных от логики их получения, обработки и отображения.



Отделяйте логику запроса данных от логики их получения, обработки и отображения



Абстрагируйтесь от сложностей и костылей, которые мы обсудили в этой статье. Наша главная цель — обеспечить постоянную синхронизацию состояния кэша и отображения. Если на экране отображается то же самое, что находится в базе данных — жизнь становится намного проще.



В этом, к примеру, может помочь NSFetchedResultsController, уведомления CoreData или схожие механизмы других ORM.



Совет 3, маскировочный



Инкапсулируйте всю логику обновления ленты и пагинации в отдельном объекте — фасаде над сервисами, занимающимися непосредственной загрузкой.



Именно в этом объекте находятся самые страшные вещи — вложенные блоки, сверка индексов и пересечений, логические ветвления. Для потребителей интерфейс фасада выглядит предельно простым и предоставляет основные методы для работы с постраничными данными — загрузка следующей страницы, обновление списка и полная его перезагрузка. Обратите особое внимание на то, что этот объект должен быть максимально хорошо протестирован.



Совет 4, самый главный



До последнего пытайтесь настоять на нормальной реализации постраничной загрузки на сервере. Limit/offset это, конечно, достаточно гибкое решение, однако клиент должен быть простым. Нет, правда, максимально простым!



Полезные ссылки




Original source: habrahabr.ru (comments, light).

https://habrahabr.ru/post/306158/

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
Оксана_Андрусенко

БОЛЬ РАСШИРЯЕТ СЕРДЦЕ.Часть 2: Смиренный не чувствует боли.Архимандрит Андрей (Конанос)

Пятница, 22 Июля 2016 г. 09:37 (ссылка)





 



Как легко говорить! Но когда испытываешь боль, ты закрываешь рот и уже ничего не говоришь. Когда испытываешь боль, ты сидишь на стуле, в кресле, погружаешься в себя и думаешь: «Христе мой, что я могу сказать! Что я могу сказать! Я не говорю. Я думаю, я смиряюсь…».      

Читать далее...
Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
Оксана_Андрусенко

БОЛЬ РАСШИРЯЕТ СЕРДЦЕ.Часть 1. Без Христа мы сошли бы с ума.Архимандрит Андрей (Конанос)

Пятница, 22 Июля 2016 г. 09:14 (ссылка)





 



Как хорошо быть радостным! Я молюсь, чтобы ты ощущал Христову радость в душе, где бы ни находился, через что бы ни проходил, каким бы тяжелым ни был крест, который несешь на плечах, в своем сердце, в своей семье, — чтобы где-то глубоко в твоем сердце воссияла хотя бы маленькая улыбка. Если ты не можешь улыбаться много, улыбнись чуть-чуть. Правду говорю. Потрудиться стоит.



И то, что я говорю, не ложь, не обман, не ложное чувство или самовнушение. Улыбнитесь, потому что всё пройдет, улыбнитесь, потому что крест вскоре приводит к воскресению жизни. Улыбнись, потому что если ты оком души можешь взглянуть на конец истории, конец света, то тогда будет царить свет. В конце будут царить радость, полное счастье, веселие от Бога.




После большой скорби, боли и горючих слез ты, если посмотришь, увидишь Христов свет




То, через что мы проходим, — это этап нашей жизни. И последнее слово не за слезами, не за болью, а за Христом, за радостью и ликованием — это великие вещи, и они истинны: после большой скорби, боли и горючих слез ты, если посмотришь, увидишь Христов свет, увидишь, что в конце начинается что-то другое.               

Читать далее...
Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
Bliss_S

Боль надо прожить

Четверг, 21 Июля 2016 г. 22:54 (ссылка)


projit_bol (315x200, 8Kb)



Быстрое время. Быстрая смена чувств. Нет места для проживания боли.



Люди идут к психологам часто с одной целью – чтоб немедленно заглушить боль. Чтоб быстрей перестать чувствовать – и снова бегом, в жизнь, в работу, в семью. Как роботы. Чтобы жить и не беспокоиться. Чтобы жить и не мешали навязчивые мысли. Чтобы жить и не чувствовать.



Потому что боль – это о чувствах. Это показатель. Где нарушена целостность, там болит. Где рана, там болит. Где рана, там не может не болеть. Если организм живой, он реагирует болью на травму, на заболевание, на сбой в работе.

Далее>

Метки:   Комментарии (4)КомментироватьВ цитатник или сообщество
Vsiaco

Предварительное горе: привычка отказываться и плакать заранее

Среда, 20 Июля 2016 г. 23:08 (ссылка)


Есть такой вид психологической защиты от боли –  отказаться от того, что тебе дорого и важно, и «похоронить» человека, идею, мечту, отношения.



Зачем? «Чтобы уже отплакать, отгоревать, чтобы уж отболело и умерло. Зачем тянуть, если всё к этому идёт?!»



Предварительное горе – это инсценированная трагедия без предмета горевания. Никто ещё не умер, не ушёл, отношения не разорвались, у идеи много шансов на выживание, а мечта ещё не помахала крылом, а человек уже отказался – «Всё хватит! Давай прощаться!»



ривычка отказываться и плакать заранее. Феномен «предварительного горя»



У горя могут быть реальные причины – близкий серьёзно болен, диагноз поставлен, дни сочтены -родственники начинают «выносить покойника», хотя человек ещё жив.



Но бывает и так, что плохой исход – это всего лишь один из вариантов. но человек останавливается именно на нём.



Зачем?

Читать далее...
Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
Scally85

Без заголовка

Среда, 20 Июля 2016 г. 18:37 (ссылка)
budzdorov100let.ru/predvest...-infarkta/


Классические предвестники инфаркта миокарда. Что нужно знать об инфаркте и о том, какие состояния его предвещают. Первая помощь при инфаркте.

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
Yllga

Классические предвестники инфаркта миокарда.

Вторник, 19 Июля 2016 г. 10:57 (ссылка)
budzdorov100let.ru/predvest...-infarkta/

Классические предвестники инфаркта миокарда. Что нужно знать об инфаркте и о том, какие состояния его предвещают. Первая помощь при инфаркте.
Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
Мечтающая_о_многом

Цитата

Воскресенье, 17 Июля 2016 г. 22:31 (ссылка)


Заходишь в солёное море по грудь, 

И чувствуешь, сколько царапин на теле. 

А если бы душу в него окунуть? 

Мы бы сдохли от боли, на самом-то деле.



2222299_more3 (700x393, 40Kb)


Метки:   Комментарии (1)КомментироватьВ цитатник или сообщество

Следующие 30  »

<боль - Самое интересное в блогах

Страницы: [1] 2 3 ..
.. 10

LiveInternet.Ru Ссылки: на главную|почта|знакомства|одноклассники|фото|открытки|тесты|чат
О проекте: помощь|контакты|разместить рекламу|версия для pda