Страницы

Поиск по вопросам

четверг, 31 января 2019 г.

Как получить местное время из серверного?

На локальной машине функция DateTime.Now.ToString() дает результат
27.06.2016 15:27:55
, а при развертывании на сервер
6/28/2016 1:14:55 AM
Как привести второй вариант в первому? Желательно без разбора строк.


Ответ

DateTime.Now.ToString(CultureInfo.GetCultureInfo("ru-ru"))
Класс CultureInfo находится в пространстве имен System.Globalization
Если получение строкового представления даты вызывается многократно в разных местах, и каждый раз явно указывать язык неудобно, то можно установить локаль в рамках всего треда:
Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo("ru-ru");

Если сервер находится в другом часовом поясе, а дату нужно получить, например, по московскому времени, то воспользуйтесь классом TimeZoneInfo
static string GetCurrentDateTime() { var tz = TimeZoneInfo.FindSystemTimeZoneById("Russian Standard Time"); return TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, tz) .ToString(CultureInfo.GetCultureInfo("ru-ru")); }
Список идентификаторов часовых поясов можно получить, вызвав TimeZoneInfo.GetSystemTimeZones()

Как вставить текст в скрытый textarea с помощью selenium webdriver

День добрый. Каким образом можно вставить текст в скрытый элемент Textarea с помощью Selenium Webdriver


Ответ

Dim txtScript = String.Format("arguments[0].innerText = '{0}';", "texttexttext") DirectCast(driver, IJavaScriptExecutor).ExecuteScript(txtScript, element)

Почему файл не добавляется в .gitignore? [дубликат]

На данный вопрос уже ответили: Не игнорируются файлы в .gitignore 2 ответа Я составил .gitignore файл положил его в корень проекта в файле есть указание на то что нужно игнорировать файлы типа .idea/workspace.xml
# Intellij *.iml .idea/workspace.xml .idea/libraries
Но все равно когда пишу git status получаю
Changes not staged for commit: (use "git add ..." to update what will be committed) (use "git checkout -- ..." to discard changes in working directory)
modified: .idea/workspace.xml
Что делаю не так?


Ответ

Строка
modified: .idea/workspace.xml
говорит что офайл уже в индексе, это значит что его для начала нужно перестать отслеживать
git rm --cached .idea/workspace.xml
GIT rm
после этого если файл правильно добавлен в gitignore то при команде
git status
файла не доолжно быть
Добавление gitignore
git add .gitignore git commit -m"gitignore was updated" gut push origin master

Не выводит случайное число в PHP

В чем разница volatile и static?

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


Ответ

volatile означает, что чтение и запись переменной с данным квалификатором является атомарной операцией, при этом любое изменение такой переменной будет видно из других потоков.
static никак не связано с многопоточностью, этот модификатор указывает, что переменная не принадлежит объекту, она ассоциирована с классом/интерфейсом. Операции над static-переменными не являются потокобезопасными. При этом каждый поток может работать со своей копией статической переменной (если она не объявлена как volatile) - соответственно без синхронизации изменения в такую переменную могут быть не видны другим потокам.

Java Memory Model и happens-before

Добрый день. Есть небольшой вопрос по JMM. Я знаю как работает happens-before, но не могу понять один момент. Вот код:
private static int x = 0; private static volatile boolean flag = false;
public static void main(String[] args) throws InterruptedException {
new Thread(() -> { x = 10; while (!flag) ; System.out.println(x); }).start();
x = 5; flag = true; }
Какое значение должно принять X? Если какое-то правило чтобы определить это?


Ответ

Если изобразить потоки выполнения в вашем коде, мы получим такую картину:

Main thread - это основной поток вашей программы, Thread1 - поток, который вы явно создаете.
Запись и чтение волатильной переменной flag действительно создают отношение Happens-Before (E → B на диаграмме). Таким образом по отношению к вызову System.out.println(x); у нас есть два потока выполнения, для каждого из которых гарантируется порядок выполнения: A → B → C и D → E → B → C. Запись в переменную x произойдет гарантированно раньше ее чтения.
Но вот инструкции записи в переменную x (A и D) находятся в состоянии гонки (race condition) и их порядок выполнения друг относительно друга не определен. В итоге то, что мы видим на диаграмме никак нельзя назвать полным порядком. JVM вполне может выполнить инструкции следующим образом:

Вопрос касательно методов Ruby

В чем разница между методами map и collect?
Подскажите плиз когда использовать map, а когда collect?


Ответ

Абсолютно никакой разницы.
Исходники этих методов указывают в один и тот же код на Си. (для массивов они реализованы на Си отдельно, но тоже одинаково)
Проверьте сами, установив и запустив pry и сделав на интересующем объекте obj
show-source obj.collect show-source obj.map

Что использовать — холивар
Есть лица, считающие, что надо использовать их так, чтобы код хорошо читался. В этом контексте обычно лучше работает collect (собрать), как "собрать результаты выполнения блока для каждого элемента". Есть лица, считающие, что надо всегда использовать map, потому что это широко известная (вне Ruby) операция преобразования данных, в которой каждый элемент коллекции преобразуется независимо от остальных. Есть лица, жалеющие, что в Ruby так много синонимов и потому так много споров о чисто косметических вещах (bikeshedding).
collect_concat vs. flat_map reduce vs. inject detect vs. find find_all vs. select include? vs. member?