Skip to content

Instantly share code, notes, and snippets.

View brownsoo's full-sized avatar
🐢
Step by step

brownsoo brownsoo

🐢
Step by step
View GitHub Profile
@brownsoo
brownsoo / EmailRegex.java
Created June 29, 2017 02:41
e-mail regular expression (java)
// 이메일 정규표현식
public static boolean testEmailFormat(String text) {
if (TextUtils.isEmpty(text)) return false;
Pattern pattern = Pattern.compile("^(([^<>()\\[\\]\\\\.,;:\\s@\"]" +
"+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(.+))" +
"@" +
"((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])" +
"|(([a-zA-Z-0-9]+\\.)+[a-zA-Z]{2,}))$");
return pattern.matcher(text).matches();
}
@brownsoo
brownsoo / ripple_effect_bg.xml
Last active September 11, 2017 08:38
Ripple effect to drawable in android
<!-- drawable-v21 -->
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="?android:attr/colorControlHighlight">
<item
android:id="@android:id/mask">
<shape android:shape="rectangle">
<solid android:color="#000000"/>
<corners android:radius="5dp"/>
</shape>
@brownsoo
brownsoo / android-architecture-components-proguard.txt
Created July 25, 2017 09:17
Proguard setting for Android Architecture Components
## Android architecture components: Lifecycle
# LifecycleObserver's empty constructor is considered to be unused by proguard
-keepclassmembers class * implements android.arch.lifecycle.LifecycleObserver {
<init>(...);
}
# ViewModel's empty constructor is considered to be unused by proguard
-keepclassmembers class * extends android.arch.lifecycle.ViewModel {
<init>(...);
}
# keep Lifecycle State and Event enums values
@brownsoo
brownsoo / updates-visible-items-recyclerview.java
Created August 22, 2017 09:43
Updates visible item views in RecyclerView
private void updateVisibleTaskIndex() {
RecyclerView.LayoutManager layoutManager = recyclerView.getLayoutManager();
if (layoutManager instanceof LinearLayoutManager) {
LinearLayoutManager linearLayoutManager = (LinearLayoutManager) layoutManager;
int first = linearLayoutManager.findFirstVisibleItemPosition();
int last = linearLayoutManager.findLastVisibleItemPosition();
RecyclerView.ViewHolder viewHolder;
for (int i = first; i <= last; i++) {
viewHolder = recyclerView.findViewHolderForAdapterPosition(i);
if (viewHolder instanceof TaskViewHolder) { //TaskViewHolder is custom holder
@brownsoo
brownsoo / ReSwift+select.swift
Created February 28, 2018 05:56 — forked from nferruzzi/ReSwift+select.swift
My own ReSwift multi observer extension with support for equatable types and optionals of equatable types
// Promise like subscriber, works with Equatable types and Optionals of Equatable types
// ie:
// let observer = document.mainStore
// .select { (state) -> UIState in state.ui }
// .then { _ in called += 1 }
// or
// let observer = document.mainStore
// .select { (state) -> String? in state.ui.selection }
// .then { _ in called += 1 }
//
@brownsoo
brownsoo / change-pod-trunk-owner-name.txt
Created March 28, 2018 06:29
Change name of cocoapod owner
// find email, password (Token)
grep -A2 'trunk.cocoapods.org' ~/.netrc
// replace email and name
curl -v -H "Authorization: Token <MY CURRENT TOKEN>" -H "Content-Type: application/json" -X POST -d '{"email":"<MY EMAIL>","name":"<MY NEW NAME>","description":"<My DESCRIPTION>"}' https://trunk.cocoapods.org/api/v1/sessions
@brownsoo
brownsoo / responsive_keyboard.swift
Created April 9, 2018 09:31
Responsive to keyboard frame in iOS
// in UIViewController
func setupHideKeypadWhenTappedAround() {
let tap = UITapGestureRecognizer(target: self, action: #selector(handleTap))
tap.cancelsTouchesInView = false
view.addGestureRecognizer(tap)
// responsive keyboard frame
NotificationCenter.default.addObserver(self, selector: #selector(handleKeyboardWillChange),
name: NSNotification.Name.UIKeyboardWillChangeFrame, object: nil)
}
@brownsoo
brownsoo / uiimage_tint.swift
Created April 10, 2018 04:54
tint color UIImage
public extension UIImage {
func tint(_ color: UIColor) -> UIImage {
let rect = CGRect(x: 0, y: 0, width: size.width, height: size.height)
let renderer = UIGraphicsImageRenderer(size: rect.size)
let result = renderer.image { c in
color.setFill()
c.fill(rect)
self.draw(in: rect, blendMode: .destinationIn, alpha: 1)
}
return result
@brownsoo
brownsoo / rounded_uiimage.swift
Created April 10, 2018 05:52
Cut UIImage with rounded rectangle or circle
public extension UIImage {
func round(_ radius: CGFloat) -> UIImage {
let rect = CGRect(x: 0, y: 0, width: size.width, height: size.height)
let renderer = UIGraphicsImageRenderer(size: rect.size)
let result = renderer.image { c in
let rounded = UIBezierPath(roundedRect: rect, cornerRadius: radius)
rounded.addClip()
if let cgImage = self.cgImage {
UIImage(cgImage: cgImage, scale: self.scale, orientation: self.imageOrientation).draw(in: rect)
}
import Foundation
extension DateFormatter {
static let iso8601Full: DateFormatter = {
let formatter = DateFormatter()
formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZZZZZ"
formatter.calendar = Calendar(identifier: .iso8601)
formatter.timeZone = TimeZone(secondsFromGMT: 0)
formatter.locale = Locale(identifier: "en_US_POSIX")
return formatter