Skip to content

Instantly share code, notes, and snippets.

View pofat's full-sized avatar

Pofat pofat

View GitHub Profile
@pofat
pofat / ProtocolNotofication.swift
Last active December 15, 2021 10:50
Deal with notification with protocol-oriented programing in Swift
//: Playground - noun: a place where people can play
import UIKit
// This is for dmoe, you can use a generice type to limit your observer to an UIViewController for common usage.
protocol Notifiable {
var name: Notification.Name { get }
func observe(by observer: Any, withSelector selector: Selector, object: Any?)
func post(object: Any? ,userInfo: [AnyHashable: Any]?)
static func remove(observer: Any)
@pofat
pofat / nginx_site
Created November 6, 2016 13:40
Nginx virtual host configuration on EC2
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
server_name <YOUR_PUBLIC_IP>;
root "/var/www/${PROJECT_ROOT}";
index index.html index.htm index.php;
charset utf-8;
@pofat
pofat / archive_framework.sh
Last active June 19, 2019 07:42
A post-action to Xcode Archive to generate final universal framework
######################
# Create log file
######################
exec > ~/Desktop/tmp/UniversalBuild_Log_$(date +"%Y%m%d%H%M%S").log 2>&1
######################
@pofat
pofat / bytes_handler.swift
Created November 1, 2016 02:38
A method to retrieve byte array and bit array from Data in Swift 3
// Using UInt8 as Byte
typealias Byte = UInt8
enum Bit: Int {
case zero, one
}
extension Data {
var bytes: [Byte] {
var byteArray = [UInt8](repeating: 0, count: self.count)
self.copyBytes(to: &byteArray, count: self.count)
@pofat
pofat / address_of_struct_Swift3.swift
Last active October 30, 2016 05:48
Print struct address in Swift 3
// Get array address
func getBufferAddress<T>(of array: [T]) -> String {
return array.withUnsafeBufferPointer { buffer in
return String(describing: buffer.baseAddress)
}
}
// Realize copy-on-write
var fiverInts = [1,2,3,4,5]
let copyFive = fiverInts
@pofat
pofat / plugins.vim
Created October 21, 2016 06:40
My Vundle config file
filetype off " required
" set the runtime path to include Vundle and initialize
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
Plugin 'VundleVim/Vundle.vim'
" All of your Plugins must be added before the following line
Plugin 'tpope/vim-vinegar'
@pofat
pofat / .gvimrc
Created October 21, 2016 04:54
Config file for my MacVime
"-------------- Color config --------------
colorscheme atom-dark " My Vim GUI color scheme
"--------------------UI tweaks--------------------
set vb t_vb= " Disable bell after GUI startemd
" Some tweaks of the atom-dark theme
" Normal fg and bg color
hi Normal guifg=#eeeeee guibg=#252b3a
" fg and bg color of visual mode
@pofat
pofat / .vimrc
Last active October 21, 2016 04:56
Config file for my vim
set nocompatible " Make vim behave more usefule way
so ~/.vim/plugins.vim " Manage plugins by vundle
"-------------- Indentation ------------
set tabstop=4 " Number of space per tab
set shiftwidth=4 " Indent 4 columns for << and >> operations
set expandtab " Replace tab with space
set autoindent " Indent at the same level of the previous line
"-------------- Searching --------------
@pofat
pofat / BattleShip.swift
Last active September 1, 2016 07:23
Battleship in OOP and FP
typealias Distance = Double
/// A struct to represent real position of the ship
struct Position {
var x: Double
var y: Double
}
extension Position {
/// Calculate if this position lies in the given range
@pofat
pofat / MyUITextField.swift
Created July 28, 2016 08:50
Padding for UITextField
MyUITextField: UITextField {
// Whatever you like
let padding = UIEdgeInsets(top: 5, left: 5, bottom: 6, right: 6);
// Paddging for place holder
override func placeholderRectForBounds(bounds: CGRect) -> CGRect {
return UIEdgeInsetsInsetRect(bounds, padding)
}
// Padding for text
override func textRectForBounds(bounds: CGRect) -> CGRect {
return UIEdgeInsetsInsetRect(bounds, padding)