Страницы

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

понедельник, 18 марта 2019 г.

Не работают горячие клавиши в linux в PhpStorm на русской раскладке

В PhpStorm 2017.2 и Gogland не работают горячие клавиши при работе на Ubuntu 16.04.3
Пробовал это решение https://github.com/zheludkovm/LinuxJavaFixes, но оно не работает. Кажется, что оно работает для версии 2017.1
Подскажите, как это можно починить?
Заранее благодарю!
UPD: Вопрос про русскую раскладку. На английской все норм


Ответ

Поставил новую версию 2017.3, после этого вот этот фикс срабатывает и все норм https://github.com/zheludkovm/LinuxJavaFixes

Курсор в contenteditable

Если в первый раз кликнуть на div contenteditable то курсор становится где-то вверху, при наборе текста, он становится на правильное место. Как можно пофиксить этот момент? Что бы и в первый раз курсор ставился по середине (по вертикали)? Заранее спасибо!
Демка http://jsfiddle.net/0gr09835/1/
div.msg { font-size: 16px; float: left; width: calc(100% - 80px); height: 64px; line-height: 64px; padding: 0 10px; color: #1a1a1a; border: 0; background-color: transparent; outline: none; font-weight: 400; border: 1px solid #000; margin-top: 25px; } [contenteditable=true]:empty:before { content: attr(placeholder); display: block; /* For Firefox */ } [contenteditable=true]:empty:focus:before { content: ""; }


P.S. Баг обнаружен в FireFox в Chrome вроде нормально всё.


Ответ

Я бы лично решил так....
div.wrapper { position: relative; width: 200px; height: 64px; background-color: transparent; } div.msg { z-index: 10; position: absolute; width: calc(100% - 20px); height: 100%; line-height: 64px; padding: 0 10px; color: #1a1a1a; background-color: transparent; border: 1px solid #000; } div.msg:focus~span { display: none; } span { z-index: -1; display: inline; width: 100%; height: 100%; position: absolute; line-height: 64px; padding-left: 20px; }

Написать сообщение...

Как написать свое правило для PhpStorm?

Нужно как-то научить PhpStorm анализировать мой код и сообщать об описанных мной проблемах в коде.
Например: Мы создаем транзакцию,
$transaction = beginTransaction();
пишем код, сохраняем, обновляем у удаляем данные... В конце делаем $transaction->commit(); или $transaction->rollBack();
Я хочу сделать так, что бы в случае, если в методе есть запуск транзакции, то PhpStrom должен меня уведомлять о том, что я обязан сделать $transaction->commit(); и $transaction->rollBack();
Можно ли сделать такое?
Буду благодарен за любую подсказку в какую сторону копать!


Ответ

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

Как сделать overflow: visible для отдельного элемента

Здравствуйте, есть абстрактный контейнер, например, .container который имеет свойство overflow: hidden, внутри него есть элемент, например, label, который в свою очередь имеет абсолютное позиционирование, и мне его нужно вынести за блок, разумеется свойство overflow: hidden не дает мне это сделать, как мне решить эту проблему? Может через JS?
.form-group { position: relative; overflow: hidden; } label.error { position: absolute; left: 0; top: 100px; }




Ответ

Только так.
.outer-wrapper { position: relative; padding: 100px; background: white; } .wrapper { overflow: hidden; height: 200px; background: darkblue; } .overflowed { position: absolute; width: 50%; background: lightblue; padding: 50px; top: 50px; left: 50px; font-family: sans-serif; }

(Overflowing the wrapper)

JustifyTextView - выравнивание текста по обоим краям

Появилась нужда выровнять текст по обоим краям, WebView не подходит, хочу именно в TextView. Посоветуйте библиотеки какие-нибудь в которых может на ваш взгляд не все громоздко.
P.S. ставлю фото, что не путали justify c center

Слева justify - выравнивание по обоим краям, справа стандартное выравнивание по левому краю.
UPD
Пробовал эту либу:
compile 'com.uncopt:android.justified:1.0'
и дальше просто JustifiedTextView вместо TextView но данный способ сильно затармаживает приложение и оно грузится порядка 25-40 секунд.
Также смотрел на английском стеке, нашел пару способов, но там по 5-7 классов надо добавлять, для такого дела я считаю не совсем разумно столько классов добавлять.


Ответ

В таком же вопросе в английском StackOverflow советуют вот эту библиотеку

Вложеный тип структуры для предоставления доступа к скрытым членам класса

Добрый день! Столкнулся с интересным феноменом, ответ на который я не смог найти.
Как вы знаете, в рамках класса или структуры мы можем определить вложенный тип, который имеет доступ к скрытым членам вмещающего типа. И часто встречаю вложенные типы, которые предоставляют доступ к некому набору скрытых членов. Например в классе LinkedList поставляемого с .Net, интерфейс IEnumerator реализует вложенный тип структуры.
https://github.com/dotnet/corefx/blob/master/src/System.Collections/src/System/Collections/Generic/LinkedList.cs
И с таким я встречаюсь очень часто. Меня интересует, почему именно структура а не класс? В случае с LinkedList для себя я пока, что отвечаю так: "Это нужно для копирование энумератора и возможно это как-то связанно с потоко безопасностью".
Но вот например в Unity, мы имеем дело с чем-то похожим, только там не имеет смысла копирование экземпляра хранимой структуры так, как при работе с ней, мы просто получаем некий адаптер который связывается с экземпляром класса.
Вот свойство которое возвращает экземпляр структуры MainModule, изменение которой ведёт к изменение скрытых членов ParticleSystem - https://docs.unity3d.com/ScriptReference/ParticleSystem-main.html
var ps = GetComponent(); ParticleSystem.MainModule main = ps.main; main.duration = 10; var mainCopy = main; mainCopy.duration = 15;
данный код изменит длительность системы партиклов на 15. При этом тип MainModule - структура
Подобный подход связан с практиками ООП? DDD? Или с чем-то ещё?


Ответ

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

Как перебрать объект и взять нужные значения

Есть объект в нем есть значения мне надо вытаскивать из него значения, с этим я справился вот так:
var arr = { elem1: '0001', elem2: '0002', elem3: '0003', elem4: '0004', elem4: '0005' }; $.each(arr, function(index, value) { if (value == '0003') { console.log( 'id найден ' + value ); } });
А вот если мне надо допустим вытащить несколько значений, к примеру 0003 и 0005? Писать еще условие? А если в объекте будет 100 значений и мне надо будет 10 определенных значений вытащить, писать еще кучу условий? Есть какое то более изящное решение моего вопроса?


Ответ

var arr = { elem1: '0001', elem2: '0002', elem3: '0003', elem4: '0004', elem4: '0005' }; var valuesToFind = ['0003', '0005']; $.each(arr, function(index, value) { if (valuesToFind.indexOf(value) != -1) { console.log( 'id найден ' + value ); } });