Дело в том, что Kotlin может обращаться к элементам XML напрямую. 

Допустим, у нас есть TextView:

<TextView
android:id="@+id/example"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Тестовый текст"
tools:layout_editor_absoluteX="200dp"
tools:layout_editor_absoluteY="595dp" />

По дефолту тут будет отображаться надпись “Тестовый текст”.

Мы хотим, чтобы при загрузке приложения текст автоматически поменялся на “Новый текст”. 

Это сделать просто: 

private var _binding: FragmentFirstBinding? = null
private val binding get() = _binding!!

override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
_binding = FragmentFirstBinding.inflate(inflater, container, false)
return binding.root
}

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)

binding.example.text = "Тестовый текст";
}

Если столкнулись с ошибкой INSTALL_FAILED_USER_RESTRICTED  на устройстве Redmi, необходимо выполнить несколько действий чтобы ее исправить:

В настройках для разработчика (Settings -> Additional Settings -> Developer options)

  1. Проверить, что включен режим отладки по USB (USB Debugging)
  2. Включить MIUI  оптимизацию (MIUI optimization)
  3. Включить установку приложений по USB (Install via USB)

В CKEditor 5 есть проблема - по умолчанию нет возможности выбрать, чтобы при добавлении новой ссылки в текст можно было ее открывать в новом окне (target="_blank"). 

Как решить данную проблему? 

Можно просто добавить дополнительную настройку при инициализации редактора: 

ClassicEditor
.create( document.querySelector( '#editor' ), {
plugins: [ Link, Typing, Paragraph, Clipboard, Undo, Enter ],
toolbar: [ 'link', 'undo', 'redo' ],
link: {
decorators: {
isExternal: {
mode: 'manual',
label: 'Open in a new tab',
attributes: {
target: '_blank'
}
}
}
}
} );

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

Такое сообщение может появиться по некоторым разным причинам. 

Есть несколько вариантов его решения.

Сначала можно просто открыть файл known_hosts (который расположен  в папке с ssh ключами, в windows это к примеру по адресу: C:\Users\username\.ssh

Удалите из этого файла строку, отвечающую за тот сервер, к которому пытаетесь подсоединиться и сохраните файл. 

Перезапустите консоль.

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

 

Столкнулась с тем, что при открытии popup окна с помощью window.open с четко заданными размерами в разных браузерах реальный размер окна отличается.

Решение оказалось на поверхности и немного неожиданное - просто в одном из сайтов было активно приближение - вместо 100% он отображался на 110%. Так что первым делом рекомендую проверить, оба ли сайта у вас на 100% zoom, если столкнулись с похожей проблемой. 

Допустим, есть список: 

<select name="country" class="input" id="country">
<option value="1" data-type="europe">Страна 1</option>
<option value="2" data-type="africa">Страна 2</option>
</select>

И нам нужно при смене выбора селекта получить значение элемента data-type.

Это можно сделать просто: 

$(document).ready(function () {
$('#country').on('change', function() {
var type = $(this).find(":selected").data().type;
});
});

В миграционный центр Сахарово помимо автобусов МЦ-1 и МЦ-2 теперь ходит еще один маршрут - это МЦ-3. 

Автобус МЦ-3 ходит по маршруту Миграционный центр Сахарово - станция МЦД-2 в Подольске. 

Расписание автобуса достаточно редкое, местами промежутки более часа, поэтому перед поездкой желательно уточнить расписание заранее. 

Расписание от Подольска (автобус отходит от автобусной станции, остановка рядом с троллейбусным кольцом):

  • 6:40, 7:24, 8:09, 8:39, 9:08, 9:38, 10:22, 11:15, 12:08, 13:13, 14:18, 15:23, 16:28, 17:33,  18:31, 19:30

Расписание от Сахарово:

  • 7:25, 8:14, 8:59, 9:29, 9:58, 10:28, 11:12, 12:05, 12:58, 14:03, 15:08, 16:13, 17:18, 18:28, 19:26, 20:20

Расписание актуально на момент написания заметки. Перед поездкой желательно проверить на сайте Мосгортранса. По некоторой информации иногда автобусы приезжают не по расписанию. 

Время в пути: чуть менее часа (зависит от пробок в Подольске). 

Стоимость: как поездка в автобусах Москвы. Возможна оплата Тройкой. 

 

Разберем на примере миграционного центра в Сахарово.

Документы

Точно понадобится: 

  • Новый паспорт
  • Нотариальный перевод нового паспорта (всех страниц)
  • Вид на жительство
  • Заполненное заявление (можно получить на месте на стойке, где выдают талоны. Время на его заполнение - минут 5).

Возможно понадобится:

  • старый паспорт (туда ставят штамп “погашено”. Возможно можно обойтись и без него, если его отбирают при выдаче нового, но его номер надо знать обязательно - это нужно указать в заявлении на смену.

Порядок действий

Приезжаете в миграционный центр. В Сахарово идете ко входу номер 4, сектор ЮЗ. При входе на территорию нужно будет показать паспорт, при входе 4 будет контроль вещей через ленту. 

...

Пришло время сменить паспорт, что решила сделать у себя на родине. Страна Европейская, визовая. В России есть вид на жительство.

Конечно можно было бы поменять паспорт в посольстве, но это дольше о дороже, решено было менять за границей. 

Все бы ничего, но опасения внушал 1 вопрос - а пустят ли назад в Россию, если в новом паспорте не будет печати о том, что выдан ВНЖ?

Спросили у таможенников - сказали не проблема, просто потом печать надо будет переставить из старого паспорта в новый (по приезде). 

И действительно - когда пересекала границу назад ни у кого даже вопроса не возникло по этому поводу, въехала с новым паспортом без проблем.

Может кому-либо пригодится эта информация. 

Чтобы в таблицу добавить FOREIGN KEY достаточно такого запроса:

ALTER TABLE название_таблицы_куда_добавить
ADD FOREIGN KEY (колонка_в_таблие_куда_добавить)
REFERENCES таблица_на_которую_ссылаемся(название_колонки_в_таблице_куда_ссылаемся);

Если нужно задать название ключа:

ALTER TABLE название_таблицы_куда_добавить
ADD CONSTRAINT название_ключа
FOREIGN KEY (колонка_в_таблие_куда_добавить)
REFERENCES таблица_на_которую_ссылаемся(название_колонки_в_таблице_куда_ссылаемся);

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

Есть несколько способов, как это сделать. К примеру: 

SELECT TABLE_NAME, COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME LIKE '%columnName%';

Где columnName - название колонки.

Если убрать знак % - то будет искать по точному соответствию, если  оставить - то по встречающейся в названиях подстроке.

...

Чтобы изменить отступы по краям страницы в PHPWord достаточно при инициализации задать параметры с нужным отступом с каждого бока.

Пример:

$phpWord = new \PhpOffice\PhpWord\PhpWord();
$section = $phpWord->addSection(array(
'marginLeft' => 500,
'marginRight' => 500,
'marginTop' => 500,
'marginBottom' => 500
));
...

Бывает необходимость, когда нужно сделать вложенную таблицу (к примеру, чтобы на каждую линию быт свой стиль, у вложенное таблицы можно отключить границы и визуально ее видно не будет).

Пример, как можно сделать вложенную таблицу в PHPWord:

$phpWord = new \PhpOffice\PhpWord\PhpWord();
$section = $phpWord->addSection();

$table = $section->addTable([
'borderSize' => 2,
'borderColor' => '000000',
'afterSpacing' => 0,
'Spacing' => 0,
'cellMargin' => 0
]);


$table->addRow();

$tableInner = $table->addCell($this->cellWidth)->addTable([
'borderSize' => 1,
'borderColor' => '000000', // тут можно установить белый цвет, если границ не нужно (ffffff)
'afterSpacing' => 0,
'Spacing' => 0,
'cellMargin' => 0
]);
$tableInner->addRow();
$tableInner->addCell($this->cellWidth)->addText('текст');

 

Для того, чтобы заменить только первое вхождение подстроки в строку, можно воспользоваться этой функцией:

function replaceInStringOnce($string, $needle, $replace)
{
$pos = strpos($string, $needle);
if ($pos !== false) {
$string= substr_replace($string, $replace, $pos, strlen($needle));
}
return $string;
}

где: 

  • $string - строка, в которой осуществляется замена
  • $needle - что заменяем
  • $replace - на что заменяем

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

Пример:


$filename = 'testfile.docx';
header( "Content-Type: application/vnd.openxmlformats-officedocument.wordprocessing‌​ml.document" );
header( 'Content-Disposition: attachment; filename='.$filename);

$phpWord = new \PhpOffice\PhpWord\PhpWord();
$section = $phpWord->addSection();

$section->addText('My test text');

$objWriter = \PhpOffice\PhpWord\IOFactory::createWriter($phpWord, 'Word2007');
$objWriter->save( "php://output");