Skip to content

Instantly share code, notes, and snippets.

View Killavus's full-sized avatar

Marcin Grzywaczewski Killavus

  • Wrocław, Poland
View GitHub Profile
class CustomersController < ApplicationController
# …
def create
if auto_create_request?
@customer = Customer.auto_create(customer_params)
else
@customer = Customer.register(customer_params)
end
respond_to do |format|
@Killavus
Killavus / productsListApp.js
Created April 16, 2016 18:52
Products List App example in Hexagonal Architecture - two features for the same UI adapter!
// Here are objects that provides use case and ports:
import ProcessingCustomerCart from "./ProcessingCustomerCart";
import RequestingCustomerCare from "./RequestingCustomerCare";
// Adapters:
import ProductsListUI from "./ProductsListUI";
import AppRouter from "./AppRouter";
import ErrorsUI from "./ErrorsUI";
import CartBackend from "./CartBackend";
import CustomerCareBackend from "./CustomerCareBackend"
@Killavus
Killavus / processingCustomerCartPorts.js
Last active April 26, 2019 10:29
Ports example in hexagonal architecture
const ProcessingCustomerPorts = (useCase, userInterface, router, eventBus, errorHandler) => {
// inbound messages - here event bus approach is used.
eventBus.on('addItemToCart', item => {
useCase.addItemToCart(item);
});
eventBus.on('cartLoaded', items => {
items.forEach(item => {
useCase.addItemToCart(item);
});
@Killavus
Killavus / processingCartUseCase.js
Created April 16, 2016 17:34
A simple use case in hexagonal architecture.
const MAX_TOTAL_ITEMS_IN_CART = 10;
const ProcessingCustomerCart = ports => {
let cartItems = [];
return {
addItemToCart(item) {
const cartItemsWithAddedItem = cartItems.concat([item]);
if (MAX_TOTAL_ITEMS_IN_CART < cartItemsWithAddedItem.length) {
ports.cartErrorHappened("Too many items in cart. Please proceed to checkout.");
@Killavus
Killavus / gist:3c1dcc34523ab6adb418
Created March 1, 2016 14:46
How to check whether your JSON response is a valid JSON API response?
1. Download the schema: http://jsonapi.org/schema
Disclaimer: Validation will not yield false negatives, but could yield false positives for the sake of flexibility.
2. Enter: http://jsonschemalint.com/draft4/#
3. Paste the schema on the left side, your response on the right side.
You should have your response validated.
@Killavus
Killavus / conference_serializer.rb
Created March 1, 2016 01:03
ConferenceSerializer object
class ConferenceSerializer < BaseSerializer
extend Forwardable
def_delegators :@url_adapter, :conferences_url,
:conference_url,
:conference_days_url
def initialize(url_adapter)
@url_adapter = url_adapter
end
@Killavus
Killavus / base_serializer.rb
Created March 1, 2016 01:02
Base Serializer
class BaseSerializer
def serialize_relationship(name, collection)
collection.map do |rel|
{ id: rel.id, type: name }
end
end
end
def fix_similarity_symmetricity(vertices_map):
fixed_records = 0
unequal_records = 0
for v1key in vertices_map:
v1 = vertices_map[v1key]
for v1index, v1similar in enumerate(v1['similars']):
v2key, v1v2similar = v1similar
if v2key not in vertices_map:
continue
view.instance().populateSubnavigation(secondaryURLMapOne);
const secondaryNav = view.find(".navbar-rt-secondary");
const navItems = secondaryNav.find(NavItem);
assert.equal(1, navItems.length);
svc = SGDClassifier(loss='squared_hinge', verbose=1, n_jobs=8, n_iter=100)
svc.fit(train_data, train_labels)
predictions = svc.predict(validation_data)
wrong = np.nonzero(validation_labels - predictions)[0].astype(np.float).shape[0]
print (float(wrong) / predictions.shape[0])