Search
Write a publication
Pull to refresh
33
0
Николай Иванов @ivnik

Пользователь

Send message
Но, для выполнения операций с файлами пользователю придется вставить шнурок назад.

Не ясно почему? Пользователь может все файлы из сети положить хоть куда, например в /tmp, потом отключиться от сети и записать на флешку?
Если пользователь запустит скрипт который в цикле будет делать touch с выставлением atime, mtime, то с большой вероятностью вы эти файлы пропустите. Поэтому, как уже писали, единственное правильное решение использовать inotify.

А во-вторых, правильно ли я понимаю, что если перед подключением usb накопителя «выдернуть ethernet шланг», то события у вас не залоггируются?
Есть ещё всякие полезные статические методы в Futures, например: Futures.transform(future, function)

Returns a new ListenableFuture whose result is the product of applying the given Function to the result of the given Future.
Особенно параллельные streams.
Библиотека jsmpp предоставляет просто низкоуровневое api для работы с smpp. Это минус, когда требуется «просто отправить смску», но зато низкоуровневое api является гибким инструментом если уметь им пользоваться.

Насчёт data coding, в стандарте GSM 03.38 (SMS Data Coding Scheme) под него выделено 4 бита, остальные биты служат для других целей, и Alphabet.ALPHA_DEFAULT — это и есть как-бы «нулевой» data coding.

Bits 3 and 2 indicate the alphabet being used, as follows:
Bit 3 Bit2 Alphabet:
0 0 Default alphabet
0 1 8 bit
1 0 UCS2 (16bit) [10]
1 1 Reserved

Но в SMPP спецификации действительно SMSC Default Alphabet в случае, когда все биты = 0.
В библиотеке используется кодирование согласно стандарту GSM 03.38, правильно или нет трудно сказать.

P.S. грабли которые могут ещё встретиться: в случае латиницы, default alphabet не определяет кодировку, на практике может встречаться как latin1 (ISO-8859-1), так и кодировка GSM 03.38, в которой по другому кодируются некоторые символы (буквенные символы кодируются по прежнему, проблема со знаками). Также, в случае default alphabet, smsc может ожидать «упакованную» латиницу (т.е. 160 символов кодируются в 140 байт).

А ещё, с этой библиотекой нужно следить, если соединение порвалось, то переустанавливать соединение.

И вероятно, до сих пор не исправлен баг, когда входящий deliver_sm может начать обрабатываться одновременно с bind_*_resp (race condition), библиотека отвергнет этот deliver_sm из-за неправильного состояния сессии (ошибка редкая, но я сталкивался).

То есть, если абонент передвигается по территории покрытия одного LAC, не совершая и не принимая вызовов, в базе данных VLR информация о его местоположении не меняется.

Есть ещё «Periodic Location Update» инициируемый телефоном по таймеру.
Хотел бы, но не смогу посетить. Видео будет записываться?
Потому что иммутабельность это круто. Это позволяет писать более надёжные программы. А иногда это даёт бонусы в производительности (хотя и не часто, обычно наоборот). В частности немутабельность String позволяет реализовать быстрый substring, без аллокации и копирования нового массива символов. А иммутабельность Integer позволяет создать кеш объектов Integer для некоторого диапазона [-N, +N] и не порождать новые объекты при автобоксинге.
Передача параметров по ссылке и по значению. Важно помнить, что в Java параметры в процедуры передаются по значению только для простых типов (int, float, ...), их обёрток (Int, Float, ...) и для String. Это означает, что изменение значения параметра внутри процедуры не затронет переданную извне переменную. Для всех остальных — работает передача по ссылке (классов, массивов и др.). Т.е изменения внутри процедуры сохраняются в переданном извне объекте. Явно задать как передавать параметр — по ссылке или по значению — нельзя.

А я всегда думал что в java всё передаётся по значению. Только для объектов по значению передаётся ссылка.
Если понимать передачу по значению как невозможность поменять содержимое объекта переданного в метод, то тут тоже напутано. Значение Integer, Float,...String нельзя поменять не по этому, а потому что отсутствует api для изменения их внутреннего состояния. Если подсунуть в bootstrap java пропатченные String, Integer с добавленными методами меняющими внутреннее состояние, то ещё как можно будет изменять их внутри метода.
Всегда будет болезни, против которых мы бессильны.
Паттерн «Visitor» — решение проблемы с использованием полиморфизма.
Аннотации из jsr 305 удобно использовать совместно с findbugs. Т.е. findbugs, проанализировав код, покажет проблемные места. К тому же Idea (кажется с 10-й версии) понимает эти аннотации (помимо своих из org.jetbrains.annotations) и подсвечивает проблемные места, что позволяет фиксить ошибки сразу, при редактировании кода, не доходя до этапа компиляции и запуска тестов.

С использованием вашего подхода, как мне показалось, мы прячем ошибку в логике, затрудняя её обнаружение. Возможно, к примеру, было бы лучше в «сеттере» бросать NPE если кто-то пытается туда передать null? Кстати, idea при компиляции может автоматически вставлять assert-ы в код для проверки notnull/nullable значений.

И ещё, не боитесь распухания PermGen из-за большого количества классов, ведь ajc для каждого Around метода порождает класс. Или эту проблему как-то можно решить?
В конце-концов можно же считать, что эти локалы размещаются на стеке?
Появляются доп. расходы на преобразование JVM ссылок в нативные и обратно.

Есть информация, что потери на преобразование ссылок, компенсируются тем, что за счёт уменьшения размеров объектов, больше данных помещается в кешах процессора, т.е. в некоторых случаях получаем не потерю, а прирост производительности.
Да, изменения не сохранятся, но и не потеряются, т.е. я могу вернуться обратно в данный буфер и сохранить изменения. И если я попытаюсь выйти (:q), находясь в другом буфере, я всё равно получу предупреждение о том, что изменения в первом буфере не сохранены.

При autowrite vim действительно будет ругаться на r/o файлы и не будет давать переключаться в другой буфер.
Из полезностей:

1) Строка с информацией по текущему файлы
set laststatus=2
set statusline=%f:%c:%l\ (%p%%)\ %y%([%R%M]%)\ buf:\ #%n\ ASCII:\ [0x%B]\ [%{&fileencoding}]

будет выводиться строка с именем файла, текущей строкой/колонкой курсора, типом файла (%y), hex-кодом символа в позиции курсора (%B) и кодировкой файла.

2) scrolloff — количество строк, которое всегда показывать в окне перед и после курсора, т.е. например, при скроллинге вниз, я всегда буду видеть под курсором N строк, т.е. листание начнётся до того, как я достигну курсором последней строки

у меня стоит :set scrolloff=5
Как вы знаете, если файл модифицирован, команды :bn, :bp, b# не сработают и выведут предупреждение о том, что надо его
сохранить.


Эту проблему проще решить установкой :set hidden (тогда будет происходить переключение без записи изменений) или :set autowrite (то же самое, только с автоматической записью изменений).

Я использую hidden.
Насчёт проблемы фокуса и мелькания cmd.exe, соберите dll и вызывайте из vim с помощью libcall:

:help libcall
Добавьте к ссылке на сайт мошенников rel=«nofollow», чтобы поисковики не учитывали эту ссылку.
В том-то и дело, что если там чужой thread id, то раздувание происходит не всегда. Посмотрите внимательно мой комментарий.
P.S. вы точно не путаете biased lock со spin/thin lock?

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Date of birth
Registered
Activity