Tips and tricks что это
tips and tricks
1 tips and tricks
См. также в других словарях:
Tips & Tricks — is a now defunct American video game magazine published by Larry Flynt Publications (LFP). For most of its existence, the publication was devoted almost exclusively to strategies and codes for popular video games. However, in late 2006 veteran… … Wikipedia
Tips from the Top Floor — Infobox Podcast title = Tips from the Top Floor caption = Podcast Logo host = Chris Marquardt url = http://www.tipsfromthetopfloor.com/ genre = Computers, TechnologyDigital Photography Tips from the Top Floor is a podcast which presents tips and… … Wikipedia
Stitch and glue — is a simplified boat building method which uses sheet plywood and eliminates the need for stems and chines. [ [http://www.glen l.com/resources/glossary.html Boat terms] ] Plywood panels are cut to detailed profiles and stitched together to form… … Wikipedia
X-Play’s sketches and segments — X Play is not relegated to just video game reviews and previews, but rather features several segments and comedy sketches that frequently appear throughout the duration of each episode.Current Segments Gaming Update A look at the current news and … Wikipedia
List of acronyms and initialisms — 0–9* 1, = Onekama, Michigan * 2D (i) Two dimensional * 2.5D (p) Two and a half dee : two dimensional computer graphics where some flat images lie in front of others * 2G (i) Second generation mobile (cellular, wireless) telephone system * 2.5G… … Wikipedia
Flip tricks (skateboarding) — A flip trick is a type of skateboarding trick in which the skateboard flips in a particular way. In many tricks, the skateboard flips upside down and/or end over end. Many tricks can be combined to form more complex flip tricks. Flip tricks are… … Wikipedia
Flip tricks — A flip trick is a type of skateboarding trick in which the skateboard flips in a particular way. In many tricks, the skateboard flips upside down and/or end over end. The most common and well known flip trick is the kickflip, invented by Rodney… … Wikipedia
Grammar Girl’s Quick and Dirty Tips for Better Writing — Infobox Podcast title = Grammar Girl s Quick and Dirty Tips for Better Writing caption = host = Mignon Fogarty picture format = url = [http://grammar.quickanddirtytips.com/ http://grammar.quickanddirtytips.com] rss =… … Wikipedia
Lead and follow — In partner dancing, the two partners are labelled as the leader and the follower, or lead and follow. Traditionally, the male partner leads and the female partner follows, though this is certainly not always the case. Many social dance forms have … Wikipedia
Pokémon Red and Blue — Box art for Pokémon Red Version, depicting the Pokémon Charizard Developer(s) Game Freak Publisher(s) … Wikipedia
Tips & Tricks
Практически во всех языках программирования одну и ту же задачу можно решить несколькими способами. Однако какие-то из них лучше, какие-то хуже. Для некоторых требуется написать 10 строк кода, для других можно обойтись и одной.
Совершенствование кода и его оптимизация порой отнимает больше времени, чем заняло написание первой версии. Вы часто встречали новый для вас код или интересную реализацию, и говорили себе: «Оказывается, это можно сделать стандартными средствами, а я изобретал велосипед»? Лично я — да. Поэтому в этой статье я собрал свою коллекцию «велосипедов», и рассказал, как от них можно избавиться.
Методы массивов
Простой пример — допустим, у вас имеется массив объектов класса User. У них есть свойство activated, которое выставляется на 1, если юзер активировал свою учетную запись. Вам нужно проверить, все ли юзеры из массива активированы. Не берем во внимание ActiveRecord (там можно и по-другому сделать), моя цель — показать работу с массивами.
Способ первый, самый примитивный:
Однако все хорошее уже придумано за нас, достаточно лишь прочитать документацию. У массивов есть замечательный метод all?, который проверяет, все ли элементы удовлетворяют условию. К слову, еще есть метод any?, возвращающий true если хотя бы один элемент соответствует условию.
Весь наш код можно записать всего лишь одной строкой:
Каким способом лучше всего подсчитать количество элементов в массиве?
Сount — самый функциональный. Можно задать параметры в скобках:
Size или length (для массивов они идентичны) — самый быстрый способ, потому что единственное его назначение — просто подсчитать количество всех элементов.
Частоиспользуемые запросы ActiveRecord
Он просто ищет все машины красного цвета. Обращаться к нему просто — Car.only_red. Но самый главный недостаток — если вам захочется все это еще и отсортировать (или добавить что-то типа: limit => 5), то придется или дорабатывать метод в модели, или использовать стандартный find.
На помощь приходит очень удобный и простой в использовании named_scope.
Теперь Car.red.with_users создаст сами-знаете-какой запрос. Удобно? Несомненно.
Link_to и его друзья
Еще несколько интересных аналогов есть у самой обычной ссылки link_to.
Первая это link_to_if, которая выведет ссылку, только если она совпадает с условием. Если не совпадает — ссылки не будет, вместо нее останется лишь текст.
Например, у нас есть ссылка «Поднять карму». Если юзер уже голосовал, она не должна быть доступна. Некоторые делают для этой цели отдельный стиль, и отображают ссылку как обычный текст. Но можно написать:
Русификация валидации
Еще одна проблема, с которой я когда-то столкнулся — это валидация и ошибки. Приложение мое было на русском языке (конечно же), и по умолчанию ошибки выдавались в таком формате: «Title не может быть пустым».
В первую очередь нужно установить гем Russian, я очень надеюсь что вы про него уже знаете. Это позволит локализовать большинство стандартных сообщений.
Затем в папке config/locales надо открыть (или создать, если нет) файл ru.yml. Вот пример из моего файла:
Как вы видите, чтобы локализовать поле title в таблице news, достаточно добавить вышеприведенную запись в файл локализации.
Поле full_messages используется для полных сообщений об ошибках. Вот как они прописываются в модели:
Параметр message берет файл локализации, идет по адресу activerecord.errors.full_messages, затем по указанному в модели, и возвращает локализованную строку. Все достаточно просто. Если не указывать message, то на выводе будет стандартная фраза об ошибке, но в моем случае я заменил ее своей.
Методы для контроллера
К слову, не стоит расписывать ошибку как можно подробнее — основная валидация должна проходить в модели. Тут же мы проверяем параметры, и ругаемся если что-то не так.
Отладка
К слову, можно использовать не только logger.debug, но и logger.info, logger.warn или даже logger.fatal. В собственных классах можно писать RAILS_DEFAULT_LOGGER.debug, потому что на фразу logger.debug он откликаться не будет.
Если надо посмотреть или изменить состояние переменных, то можно воспользоваться дебаггером. Для этого помещаем запись debugger, например:
Сначала переходим к irb, а затем смотрим наши переменные. Кроме просмотра, их можно поменять и уже потом пускать их в приложение.
По дебаггеру можно написать целую книгу, тут я привел примеры лишь базового использования. Для тех, кто хочет «всё и сразу» — читаем ссылки абзацем ниже.
Заключение
Android Tips and Tricks
Android Studio
Не забывайте использовать шорткаты
Описание | Mac | Linux/Win |
Быстрый поиск по настройкам, действиям в IDE | Cmd+Shift+A | Ctrl+Shift+A |
Переопределить метод родительского класса | Cmd+O | Ctrl+O |
Поиск файла по имени | Cmd+Shift+O | Ctrl+Shift+N |
Список недавно редактируемых файлов | Cmd+Shift+E | Ctrl+Shift+E |
Список недавно открытых файлов | Cmd+E | Ctrl+E |
Последний редактируемый файл | Cmd+Shift+Backspace | Ctrl+Shift+Backspace |
Найти все места, где используется метод / переменная | Opt+F7 | Alt+F7 |
Как предыдущий пункт, только во всплывающем окне | Cmd+Opt+F7 | Ctrl+Alt+F7 |
Приведение кода в соответствие code style | Cmd+Opt+L | Ctrl+Alt+L |
Окружить блок кода конструкцией(if, else, try) | Opt+Cmd+T | Alt+Ctrl+T |
Открыть терминал | Opt+F12 | Alt+F12 |
Сгенерировать Setter/Getters/ | Cmd+N | Alt+Ins |
Поиска класса по имени | CMD+O | Ctrl+N |
Рефакторинг имени | Shift+F6 | Shift+F6 |
Быстрое исправление | Opt+Enter | Alt+Enter |
Перейти к объявлению переменной, класса, метода | Cmd+B | Ctrl+B |
Показать список параметров для метода | Cmd+P | Ctrl+P |
Меню рефакторинга | Ctrl+T | Ctrl+Alt+Shift+T |
Убить процесс | Cmd+F2 | Ctrl+F2 |
Поиск по всему проекту | Shift+Shift | Shift+Shift |
Удалить строку | Cmd+Backspace | Ctrl+Y |
Продублировать строку | Cmd+D | Ctrl+D |
Расширить/Уменьшить выделенное | Opt+Up/Down Arrow key | Shift +Ctrl+W |
Многострочное выделение | Ctrl+G | Alt+J |
Полный список шорткатов | MacOSX | Linux/Win |
Используйте плагины для повышения эффективности
Используйте Live Templates при разработке в Android Studio
Template | Описание |
newInstance | Генерирует статический метод `newInstance` внутри Фрагмента |
Toast | Генерирует Toast.makeText(context, «», Toast.LENGTH_SHORT).show(); |
fbc | findViewById с кастом к нужном типу View |
const | Определить константу типа int |
logd | Генерирует Log.d(TAG, «»); |
logm | Вынести в лог текущее имя метода и его аргументы. |
logr | Вынести в лог результат текущего метода |
logt | Статическая строка TAG для лога, с текущим именем класса |
psf | public static final |
sout | Печатает строку в System.out |
soutm | Печатает имя класса и имя метода в System.out |
soutp | Печатает аргументы и значения метода в System.out |
visible | Установить видимость View к VISIBLE |
gone | Установить видимость View GONE |
noInstance | Приватный конструктор без аргументов, чтобы запретить создание сущностей |
→ Полный список Live Templates в Android Studio
Постфиксное автодополнение кода в Android Studio
В Android Studio/IntelliJ есть специальный механизм дополнения кода, который позволяет применить конструкцию к определённой переменной.
Template | Описание |
Полный список доступных постфиксных дополнений кода вы можете найти в Settings → Editor → Postfix Templates
Используйте тему Darcula в Android Studio
Да, я осознаю, что это больше вопрос предпочтений. Однако поверьте мне, что использование тёмной темы сократит нагрузка на ваши глаза.
Не используйте неудобный/мелкий шрифт
По возможности старайтесь использовать такой шрифт, который удобно читать и не доставляет дискомфорта для ваших глаз. Я использую Menlo font.
Используйте codestyle
Вам следует использовать стандартный codestyle. Для примера посмотрите на AOSP Codestyle или Square IntelliJ Codestyle
Используйте Встроенный терминал в Android Studio
Используйте Memory/Network/CPU мониторинги в Android Studio для профилирования вашего приложения
Эмулятор
Кроме использования реальных девайсов, вы также должны использовать эмуляторы ввиду простоты их настройки и использования. Также вы можете легко настраивать на них разрешение и версию API для тестирования. Genymotion, Intel эмулятора поставляемый вместе с SDK
Vysor
Это очень полезный инструмент, достойный отдельного упоминания. По сути, он позволяет стримить содержимое физического Android устройства на экран ноутбука. Очень удобно, когда вам нужно продемонстрировать демо вашего приложения на презентации. Мы можем взаимодействовать с реальным устройством, и всё это будет представлено прямо на экране ноутбука. Есть бесплатная и платная версии, и платная определённо стоит того, чтобы её купить.
DeskDock
Если вам необходимо манипулировать физическим Android устройством (используя клавиатуру и мышь), то это приложение замечательно с этим справится. Позволяет вам управлять вашим Android устройством, как если бы это была часть рабочего стола компьютера. Бесплатная версия позволяет использовать мышь, Платная версия позволяет использовать клавиатуру и другие возможности. С этим приложением можно тестировать приложение, не отрывая рук от клавиатуры ноутбука.
Выбирайте лучшие инструменты при написании кода
Выполните следующую команду в директории вашего проекта для обновления gradle wrapper.
— Установите опции сборки в глобальном в `gradle.properties` файле
Полезные советы по UI/UX
Движение
Material Design использует физику реального мира как основу. Объекты в реальном мире не двигаются линейно, они двигаются по искривлённым траекториям а также с ускорением и замедлением в зависимости от ситуации.
Таким образом, вы должны манипулировать свойствами и анимировать объекты так, чтобы это выглядело натурально и естественно. Например машина, выезжающая за экран начинает движение медленно, постепенно ускоряясь по приближению к краю экрана. Аналогично ui элементы должны перемещаться используя такие классы как AccelerateInterpolator, FastOutSlowInInterpolator и другие.
Шрифты, отступы
В принципе, нестандартные шрифты можно использовать как часть брэндинга, однако лучше всё-таки остановиться на стандартных Roboto и Noto, если это возможно, в особенности для основного текста из-за их узнаваемости и частого использования.
Roboto покрывает Латинские, Греческие и Кириллические символы, Noto покрывает остальные языки.
Балансировка яркости шрифта — это один из наиболее важных параметров современной стилистики. Основная идея заключается в том, что чем меньше шрифт, тем более ярким он должен быть, и наоборот.
Сам текст должен быть выровнен по сетке с ячейкой 4dp.
Идеальная длина текста для больших блоков от 40 до 60 символов в строке.
Иконки
Иконки должны быть размером 48dp c краями 1dp, что эквивалентно:
Дополнительная иконка с размером 512px x 512px должна быть предоставлена для Google Play.
То же касается иконки с размером 1024px x 500px, которая будет отображаться в шапке на странице вашего приложения.
Ripple
Когда реализуете Ripple, который выходит за края View, как например у ImageView, используйте:
Остальные пункты
Элементы в соответствии с Material Design Views должны быть расположены на сетке с ячейкой размерами 8dp, если это возможно. Благодаря этому подходу UI выглядит структурированным и приятным.
Если вам нужна ссылка на какой-нибудь элемент ViewGroup (LinearLayout, FrameLayout, RelativeLayout, etc.) и вам не нужны никакие специфичные методы именно для этого типа ViewGroup, то не храните конкретный тип, используйте просто ViewGroup.
Другие ресурсы
Cделайте закладки в своём браузере на различные популярные ресурсы
Используйте бесплатные mock API для тестирования
Все примеры, перечисленные ниже, тем или иным образом позволяют тестировать ваше приложение без бэкенда. Если понадобится воспользоваться, пробегитесь по списку и посмотрите, какой из пунктов максимально удовлетворяет вашим запросам и потребностям по функционалу.
Visual Studio tips and tricks
Whether you are new or have been using Visual Studio for years, there are a bunch of tips and tricks that can make you more productive. We’ve been sharing tips on Twitter using the hashtag #vstip for a while, and this is a collection of the best ones so far.
Debugger
Hitting F10 to build, run, and attach debugger instead of F5 will automatically break on the first time your own code is being executed. No breakpoints needed.
Supported from Visual Studio 2005
Reattach to process (Shift+Alt+P) is extremely helpful when you have to attach to the same process again and again.
Supported from Visual Studio 2017 v15.8
A blue dot in the margin indicates a switch of threads while stepping through debugging.
Supported from Visual Studio 2013
Solution
Improve performance of solution load and reduce visual noise by disabling restore of node expansions in Solution Explorer as well as Reopen documents on solution load.
Supported from Visual Studio 2019
For fast keyboard navigation, use Ctrl+T to find anything in your solution – files, classes etc.
Supported from Visual Studio 2017
Assign a keyboard shortcut to perform a “git pull” so you don’t have to use CLI or Team Explorer to ensure your repo is up to date.
Supported in Visual Studio 2019
Make Solution Explorer automatically select the current active document, so you never lose track of its location in the project.
Supported from Visual Studio 2010
Editor
Easily surround HTML elements with a using Shift+Alt+W. The inserted is selected so you can easily edit it to be any tag you’d like, and the end-tag matches up automatically.
Supported from Visual Studio 2017
Supported from Visual Studio 2013
You don’t need to write quotation marks around JSON property names, simply type a colon and Visual Studio will insert the quotes automatically.
Supported in Visual Studio 2015
Make IntelliSense and tooltips semi-transparent for the duration you press and hold the Control key.
Supported from Visual Studio 2010
Instead of retyping ‘(‘ to show parameter info in method signatures, use Ctrl+Shift+Space to display the currently used overload.
Supported from Visual Studio 2010
Miscellaneous
Play a sound when certain events occur within Visual Studio.
Supported from Visual Studio 2010
Create custom window layouts for specific development scenarios or monitor setups and switch between them easily.
Supported from Visual Studio 2017
Supported from Visual Studio 2019
Extensions
Visual Studio Spell Checker. An editor extension that checks the spelling of comments, strings, and plain text as you type or interactively with a tool window. It can also spell check an entire solution, project, or selected items. Options are available to define multiple languages to spell check against.
Supported from Visual Studio 2013
Add New File. A Visual Studio extension for easily adding new files to any project. Simply hit Shift+F2 to create an empty file in the selected folder or in the same folder as the selected file.
Supported from Visual Studio 2015
Git Diff Margin. Git Diff Margin displays live Git changes of the currently edited file on Visual Studio margin and scroll bar.
Supported from Visual Studio 2012
This was just a few of the thousands of available extensions. To see more extensions, go to the Visual Studio Marketplace.
Python Tips, Tricks, and Hacks (часть 4, заключительная)
5. Функции
5.4 Декораторы
Декораторы функций довольно просты, но если вы не видели их раньше, вам будет трудно догадаться, как они работают. Это неочевидно, в отличие от большей части синтаксиса Python. Декоратор — это функция, оборачивающая другую функцию: сначала создается главная функция, затем она передается декоратору. Декоратор возвращает новую функцию, которая используется вместо первоначальной в остальной части программы.
Не будем больше задерживаться на этом. Вот синтаксис:
В этом примере function передается в decorator1, а он возвращает функцию, которая вызывает function и возвращает число, большее ее результата на единицу. Эта функция передается в decorator2, который ее вызывает и печатает результат. Так-то.
Следующий пример делает абсолютно то же, но более многословно:
Обычно декораторы используют для добавления новых возможностей вашим функциям (см. создание методов класса). Еще чаще они не используются совсем. Но чтобы разбираться в коде, вам нужно знать, что это такое.
5.5 Запуск одной из нескольких функций при помощи словаря
Не хватает оператора switch? Вы, возможно, знаете, что в Python нет эквивалента switch для функций (разве что многократное elif). Но вы можете воспроизвести его поведение, создав словарь функций. Например, пусть вы обрабатываете нажатия клавиш и у вас есть следующие функции:
Обычный метод — использование elif:
Но вы также можете положить все функции в словарь, ключами которого будут значения соответствующего keycode. Вы даже можете обработать случай получения неизвестного keycode:
Очевидно, этот код намного понятней предыдущего (особенно при большом числе функций).
6. Классы
6.1 Передача self вручную
Метод — это обычная функция: если он вызывается у экземпляра объекта, этот экземпляр передается в качестве первого аргумента (обычно его называют self). Если по какой-то причине вы вызываете метод не у экземпляра, вы всегда можете первым аргументом передать экземпляр вручную. Например:
Изнутри эти выражения абсолютно одинаковы.
6.2 Проверка на существование метода или свойства
Хотите узнать, есть ли у объекта тот или иной метод или свойство? Вы можете использовать встроенную функцию hasattr, которая принимает объект и имя атрибута.
Вы можете также проверить существование атрибута и получить его с помощью встроенной функции getattr, которая также принимает объект и имя атрибута. Третий аргумент необязательный и устанавливает значение по умолчанию. Если атрибут не найден и третий аргумент не задан, бросается исключение AttributeError.
Не используйте getattr и hasattr слишком часто. Если вы написали класс так, что необходимо проверять существование свойств, то вы всё сделали неправильно. Свойство должно существовать всегда, а если оно не используется, можно установить его в None. Эти функции используются в основном для поддержки полиморфизма, т. е. возможности использовать в вашем коде любых типов объектов.
6.3 Изменение класса после создания
Вы можете добавлять, изменять и удалять свойства и методы класса после его создания, даже после того, как будут созданы экземпляры этого класса. Для этого достаточно использовать запись Class.attribute. Изменения применятся ко всем экземплярам класса, вне зависимости от того, когда они были созданы.
Фантастика. Но не увлекайтесь изменением существующих методов, это дурной тон. Кроме того, это может нарушить работу методов, использующих изменяемый класс. С другой стороны, добавление методов менее опасно.
6.4 Создание методов класса
Иногда при написании класса возникает потребность в функции, вызываемой от класса, а не его экземпляра. Иногда этот метод создает новые экземпляры, иногда он не зависит от индивидуальных свойств экземпляров. В Python есть два способа это сделать, оба действуют через декораторы. Ваш выбор зависит от того, нужно ли вам знать, какой класс вызвал метод.
Метод класса (class method) принимает вызвавший его класс первым аргументом (аналогично обычные методы получают первым аргументом соответствующий экземпляр). Этому методу известно, запущен он от этого же класса или от подкласса.
Статический метод (static method) не имеет никаком информации о том, откуда он запущен. Это обычная функция, просто в другой области видимости.
Как статические методы, так и методы класса могут быть вызваны непосредственно из класса:
Заключение
Нужно больше вдохняющих идей? Для начала неплохо посмотреть страницу Python Built-in Functions. Там довольно много хороших функций, о которых вы, возможно, никогда не слышали.
Если у вас есть полезные уловки или вещи, которые следует знать, автор предлагает добавить их в свою статью.
С другими статьями автора, а также с источниками информации вы можете ознакомиться здесь.