This was quite a journey for me. I started the same way everyone else has; with my very first “Hello World” program written in Python 3:
# Hello World! program.
def main():
#get the user's name
name = input('What is your name? ')
print('Hello World! I am', name)
# Call the main function
main()
This was the first assignment for my Programming in Python course. I was not content to have it only print “Hello World”—no, I need to personalize it in some small way. The following was really interface (if I’m speaking pythonically); to a wider interest in programming qua programming:
Nevertheless, I was not content with this. I allowed myself to be sucked into a forceful vortex that had me thinking I’d be using Jupytr notebooks, matplotlib, etc., to show off how much I know about Python from Twitter. Notwithstanding, the above is what was submitted because I didn’t know how to do any of the fancy stuff I read about. I didn’t know how to use Pandas. I didn’t know how to use Blaze. I didn’t even know how to use ‘conda update conda’ in my terminal (oh; it’s a package manager—not just an easy way to install Python 3.4 on my computer at work without Admin privlages!).
The reality is that I still have a lot to learn—I’m still in the shallow end. Nothing prepared me for the absolute angst associated with trying to implement a (beginner’s attempt at) the Object Oriented Programming (OOP) paradigm as a final extra-credit assignment! I didn’t even know I had been writing, although very functional; or, very function reliant, procedural code. Somewhere between nesting lists inside of dictionaries, iterating over them, and implementing ‘try, except’ statements, I thought I was really going places with my code. OOP razed that sandcastle quite briskly. Like a kind of soverign and violent natural phenomena.
From my first program to my 10th program, this is how far I have come. This is my attempt at OOP, classes, ‘init’ methods, inheritance composition, and more. It’s likely pretty flawed and could be made less redundant, but I didn’t copy StackOverflow and tried to figure it out on my own; so, I’m damn proud of it! There were some programs specs that I needed to show an understanding of; quickly, the program specs:
Here are my solutions:
# -*- coding: utf-8 -*-
""" A10--Trivia Game!
--> two player trivia game
--> OOP approach to building the game with classes and objects
"""
import csv
import random
# the Question class acts as a placeholder for the parts of the question
# needed to construct questions and check answers
class Question:
# __init__ uses the Data class method getData through composition
def __init__(self, question, a1, a2, a3, a4, answer, ansNum):
self.getData = Data('csv')
self.question = question
self.a1 = a1
self.a2 = a2
self.a3 = a3
self.a4 = a4
self.answer = answer
self.ansNum = ansNum
# the method performs better as a class method since it instantiates the
# Question class with sample questions for the game
@classmethod
def getQuestion(cls, triviaDict):
# using random to get 10 random numbers between a specific range for
# trivia questions
randomGenerator = random.sample(range(1, 817), 1)
# for an individual random number in the sample range
# --> iterate and use number as index for the trivia questions
for i in randomGenerator:
question = triviaDict[i][0]
a1 = triviaDict[i][1]
a2= triviaDict[i][2]
a3 = triviaDict[i][3]
a4 = triviaDict[i][4]
answer = triviaDict[i][5]
ansNum = triviaDict[i][6]
# this creates an instance to return (from question class)
aQuestion = Question(question, a1, a2, a3, a4, answer, ansNum)
return aQuestion
# this is a part of using composition rather than inheritance to get the
# attributes from the getData method
def __getattr__(self, attr):
return getattr(self.getData, attr)
# this method sets up the question (also checks answer)
@classmethod
def setupAsk(cls, q):
print('\n', q.question, '\n\t1: ', q.a1, ' \
\n\t2: ', q.a2, '\n\t3: ', q.a3, ' \
\n\t4: ', q.a4, '\n')
# make sure the user's input works
while True:
try:
choice = int(input("\nWhat's your answer? \n--> "))
except ValueError:
print('\nSorry, the answer only accepts numbers; please \
enter a number 1-4')
choice = int(input("\nWhat's your answer? \n--> "))
finally:
if choice in range(1, 5):
break
# if the question is correct, return true; if not, return false
if choice == q.ansNum:
print('\nCorrect! \n', q.answer)
return True
elif choice != q.ansNum:
print('\nIncorrect! \n', q.answer)
return False
# the Data class handles openning the file and preparing it to be used by
# the Question and Game class
class Data:
def __init__(self, filetype):
self.filetype = filetype
# opens the CSV to read and prepare it to be used in computaiton later
@classmethod
def getData(cls):
# make sure there isn't an IO error
try:
# open the csv file + use an index accumulator for dictionary
with open('trivia.csv') as csvFile:
readCSV = csv.reader(csvFile, delimiter=',')
index = 0
# questions, answer choices, and answers dictionary
rowDict = {}
questionData = {}
# reading the trivia questions
for row in readCSV:
rowDict[index] = row
question = rowDict[index][0]
a1 = rowDict[index][1]
a2 = rowDict[index][2]
a3 = rowDict[index][3]
a4 = rowDict[index][4]
answer = rowDict[index][5]
# figure out which answer is correct and assign a variable
if answer == a1:
ansNum = 1
elif answer == a2:
ansNum = 2
elif answer == a3:
ansNum = 3
elif answer == a4:
ansNum = 4
else:
print("Error! No correct answer")
# place questions into new dictionary in the right order
questionData[index] = [question, a1, a2, a3, a4, \
answer, ansNum]
index += 1
return questionData
except IOError:
print("The file could not be found.")
# the Game class is where the bulk of the game's structure is found
class Game:
def __init__(self, playerID, gamePoints):
self.playerID = playerID
self.gamePoints = gamePoints
# method to create instances for questions and find out if a quesiton
# was answered correctly or not
def round(self, qClass, data):
gamePoints = 0 # reset to 0 for new round
# instances
q1 = qClass.getQuestion(data)
q2 = qClass.getQuestion(data)
q3 = qClass.getQuestion(data)
q4 = qClass.getQuestion(data)
q5 = qClass.getQuestion(data)
# return value is true or false; this computes points
if qClass.setupAsk(q1) == True:
gamePoints += 1
if qClass.setupAsk(q2) == True:
gamePoints += 1
if qClass.setupAsk(q3) == True:
gamePoints += 1
if qClass.setupAsk(q4) == True:
gamePoints += 1
if qClass.setupAsk(q5) == True:
gamePoints += 1
# let the user know what happenned this round
print('you won {} points this game!'.format(gamePoints))
return gamePoints
def main():
# local variables
flag = False
gameNum = 1
# instance of Data class
data = Data('csv')
questionsData = data.getData()
# instance of Question class with filler data
questions = Question('question', 'a1', 'a2', 'a3', 'a4', \
'answer', 'ansNum')
# create both players
playerOne = Game(str(input('PLAYER ONE//\nEnter your name: ')), 0,)
playerTwo = Game(str(input('PLAYER TWO//\nEnter your name: ')), 0,)
# while loop to keep the game going if the user chooses
while flag != True:
# let the user know which round they're playing
print('\nROUND ', gameNum, '//\nPlayer One')
# first player instance; asks five questions
p1round = playerOne.round(questions, questionsData)
print("""
+++++++++++++++++++++++++++++++++++++++++++++++++
+ SWITCH PLAYERS! +
+++++++++++++++++++++++++++++++++++++++++++++++++
""")
# let the user know to switch players
print('\nROUND ', gameNum, '//\nPlayer Two')
# second player instance; asks the five quesitons
p2round = playerTwo.round(questions, questionsData)
# let the user know which round they are on with accumulator
gameNum += 1
# figure out who won and use user's inputed name and their points
# in print statement
if p1round < p2round:
print('Thank you for playing! {} is the winner with {} total \
game points!'.format(playerTwo.playerID, p2round))
elif p2round < p1round:
print('Thank you for playing! {} is the winner with {} total \
game points!'.format(playerOne.playerID, p1round))
elif p2round == p1round:
print('There was a tie! Both {} and {} both earned {} total \
game points; but you are both still \
winners!'.format(playerOne.playerID, playerTwo.playerID, \
p1round))
# find out if user wants to continue + validate user response
while True:
try:
choice = str(input("\nKeep playing? \n--> ")).upper()
except ValueError:
print("Sorry, enter either a 'Y' for 'Yes', or 'N' for 'No'.")
finally:
if choice == 'N':
flag = True
break
if choice == 'Y':
break
else:
print("please enter either a 'Y' for 'Yes', or 'N' \
for 'No'.")
# say bye to players and quit the program
print('\nThank you for playing! See you next time!\n')
main()
I couldn’t help but think about Plato when I was trying to understand how Objects work in Python. There’s something really similar about how a ‘class’ has a kind of ontos—that it isn’t just a blueprint—it exists, and it did exist before the ‘init’ method gave it attributes; that prescriptive human speculation we come up with when describing the form of something abstract like ‘the Beautiful’ (although it’s been a while since my Phil 100A course at UCLA—I hope I’m not misrepresenting the Phaedo).
The course is over but I have a few titles I purchased from Packt to dig a little deeper. Suggestions are always welcome; the journey’s telos is to learn; and learn I intend to do!


{% extends "yourcfp/base.html" %} {% load crispy_forms_tags %} {% block content %}
There are no results for your query.


Core Concepts (Modules)
- Modules – Angular apps are modular and Angular has its own modularity system called NgModules.
- NgModule – Decorator that takes the single metadata object
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
@NgModule({
imports: [ BrowserModule ],
providers: [ Logger ],
declarations: [ AppComponent ],
exports: [ AppComponent ],
bootstrap: [ AppComponent ]
})export class AppModule { }
Core Concepts (Angular libraries)
- Library Modules - Angular ships as a collection of JavaScript modules.
- Each Angular library name begins with the @angular prefix.
- For example
// angular component decorator
import { Component } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
Core Concepts(Components)
- Most basic building block
- An Angular application is a tree of Angular components.
- Must belong to NgModule
- Metadata configuration specified via the Component decorator
Core Concepts(Components Continued...)
- Angular creates, updates, and destroys components as the user moves through the application with use of
various lifecycle hooks.
Core Concepts(Metadata)
- Metadata tells Angular how to process a class.
- Decorates a class so that it can configure the expected behavior of the class
- Template, metadata, and component together describe a view
- Metadata decorators: selector, templateUrl, providers, @input, @output, @injectable
@Component({
selector: 'app-my-first',
templateUrl: './my-first-app.component.html',
providers: [ MyFirstService ]
})
export class MyFirstAppComponent implements OnInit { /* */ }
Core Concepts(Data binding)
- A mechanism for coordinating parts of a template with parts of a component
- Binding Markup added to the template HTML.
- Four forms of Databinding syntax
Core Concepts(Services)
- Broad Category - Includes any value, function or feature which the Angular application needs
- It is typically a class with a narrow, well-defined purpose.
- Examples include:
- logging service
- data service
- message bus
- tax calculator
- application configuration
- Anything else
Core Concepts(Dependency Injection)
- It’s a way to supply a new instance of a class with the fully-formed dependencies it requires.
- Angular uses dependency injection to provide new components with the services they need.


Deleting an medication is not a reversible change. Any information associated
with this record will be removed, and cannot be recovered.
{% extends 'layouts/base.html' %} {% import 'macros/form_macros.html' as f %} {% set deletion_endpoint = 'admin.delete_medication_request' %} {% set endpoints = [ ('admin.medication_info', 'Medication information'), ('admin.change_medication_info', 'Change Details'), (deletion_endpoint, 'Delete medication') ] %} {% macro navigation(items) %}
{% endmacro %} {% macro medication_info(medication) %}| Medication Name | {{ medication.name }} |
| Description | {{ medication.description }} |
| Dosage | {{ medication.dosage }} |


| Action | Live | Details |
|---|---|---|
| Collapse | Collapse | In Card Header, " " sign given. when you click on this icon, card will be collapsed and change it's sign to " " |
| Reload | Refresh | In Card Header, " " sign given. Click this icon when you want to reload/reset your card |
| Expand | Toggle | In Card Header, " " sign given.It is used to set card in fullscreen & icon changes to " " |
| Close | Remove | In Card Header, " " sign given to remove card from this page. |
Oat cake ice cream candy chocolate cake chocolate cake cotton candy dragée apple pie. Brownie carrot cake candy canes bonbon fruitcake topping halvah. Cake sweet roll cake cheesecake cookie chocolate cake liquorice. Apple pie sugar plum powder donut soufflé.
Dessert jelly-o jelly dessert jujubes croissant. Marshmallow pudding pastry halvah dessert apple pie caramels bonbon toffee. Jelly beans brownie sweet bear claw biscuit. Marshmallow jelly gummies marzipan tootsie roll topping.
Cotton candy wafer powder bonbon topping. Sugar plum danish tootsie roll jelly tart icing bear claw. Gingerbread brownie sweet roll cheesecake chocolate cake jelly beans marzipan gummies dessert.
Oat cake ice cream candy chocolate cake chocolate cake cotton candy dragée apple pie. Brownie carrot cake candy canes bonbon fruitcake topping halvah. Cake sweet roll cake cheesecake cookie chocolate cake liquorice. Apple pie sugar plum powder donut soufflé.
Dessert jelly-o jelly dessert jujubes croissant. Marshmallow pudding pastry halvah dessert apple pie caramels bonbon toffee. Jelly beans brownie sweet bear claw biscuit. Marshmallow jelly gummies marzipan tootsie roll topping.
Cotton candy wafer powder bonbon topping. Sugar plum danish tootsie roll jelly tart icing bear claw. Gingerbread brownie sweet roll cheesecake chocolate cake jelly beans marzipan gummies dessert.
Oat cake ice cream candy chocolate cake chocolate cake cotton candy dragée apple pie. Brownie carrot cake candy canes bonbon fruitcake topping halvah. Cake sweet roll cake cheesecake cookie chocolate cake liquorice. Apple pie sugar plum powder donut soufflé.
Dessert jelly-o jelly dessert jujubes croissant. Marshmallow pudding pastry halvah dessert apple pie caramels bonbon toffee. Jelly beans brownie sweet bear claw biscuit. Marshmallow jelly gummies marzipan tootsie roll topping.
Cotton candy wafer powder bonbon topping. Sugar plum danish tootsie roll jelly tart icing bear claw. Gingerbread brownie sweet roll cheesecake chocolate cake jelly beans marzipan gummies dessert.
Oat cake ice cream candy chocolate cake chocolate cake cotton candy dragée apple pie. Brownie carrot cake candy canes bonbon fruitcake topping halvah. Cake sweet roll cake cheesecake cookie chocolate cake liquorice. Apple pie sugar plum powder donut soufflé.
Dessert jelly-o jelly dessert jujubes croissant. Marshmallow pudding pastry halvah dessert apple pie caramels bonbon toffee. Jelly beans brownie sweet bear claw biscuit. Marshmallow jelly gummies marzipan tootsie roll topping.
Cotton candy wafer powder bonbon topping. Sugar plum danish tootsie roll jelly tart icing bear claw. Gingerbread brownie sweet roll cheesecake chocolate cake jelly beans marzipan gummies dessert.
Oat cake ice cream candy chocolate cake chocolate cake cotton candy dragée apple pie. Brownie carrot cake candy canes bonbon fruitcake topping halvah. Cake sweet roll cake cheesecake cookie chocolate cake liquorice. Apple pie sugar plum powder donut soufflé.
Dessert jelly-o jelly dessert jujubes croissant. Marshmallow pudding pastry halvah dessert apple pie caramels bonbon toffee. Jelly beans brownie sweet bear claw biscuit. Marshmallow jelly gummies marzipan tootsie roll topping.
Cotton candy wafer powder bonbon topping. Sugar plum danish tootsie roll jelly tart icing bear claw. Gingerbread brownie sweet roll cheesecake chocolate cake jelly beans marzipan gummies dessert.


Map values to Numbers, then perform nearby-value and range queries.
Throw an Error when attempting to add a value and there are already maxvals values mapped.
maxvals
Simply return the single value mapped closest to the sample. Equivalent to nearest (sample, 1); but returns an individual value rather than an Array.
nearest (sample, 1);
Drop a member from the index by exact value, returning the dropped value.
@returns Object|undefined
Get a member of the index by exact value, or undefined.
The value stored for key, or undefined if key was never set or has expired.
key
undefined
Return the value mapped to the highest key in the index.
Return the value mapped to the lowest key in the index.
Find the values mapped nearest to the provided index. Optionally limit the number of entries returned.
Find the values mapped nearest above or equal to the provided value. Optionally limit the number of entries returned.
Find the values mapped nearest below or equal to the provided index. Optionally limit the number of entries returned and/or restrict the minimum index which may be selected.
Map a value to a Number index.
Self.


USD/JPY remains bearish/neutral near-term – UOB
by Pablo PiovanoUSD/JPY is seen grinding lower in the next weeks, with the next target at the 108.00 handle, noted FX Strategists at UOB Group.
Key Quotes
24-hour view: “USD dipped to 108.27 before rebounding quickly to touch 108.69. The registered range was close to our expected range of 108.30/108.70. Momentum indicators are turning neutral and USD could continue to trade sideways, likely between 108.30 and 108.75”.
Next 1-3 weeks: “When USD dropped to 108.23 last Thursday, we ‘upgraded’ the downside risk and indicated on Friday (15 Nov, spot at 108.50) that USD is “expected to trade with a downward bias towards 108.00”. While USD held above 108.23 and traded mostly sideways since then, we continue to the view that the risk is on the downside. That said, after the price action over the past few days, 108.00 may not come into the picture so soon. On the upside, only a break of 109.00 (‘strong resistance’ level previously at 109.15) would indicate that the current downward pressure has eased”.


Welcome to our Wedding Website!
Hey, there! Thanks for stopping by! Here you'll find all the information that you need about the wedding, the location, the accomodations, etc. Have a question? Chances are it will be answered here! Just take a look at the navigation above, and you'll be able to see a little bit about us, get all the nitty, gritty details of the big day, RSVP, and more.
Looking forward to seeing you at our wedding!


git - tools
Tools for or around git
CHANGELOG
tools for generating changelog from git data
btford/grunt-conventional-changelog
Grunt task for generating a changelog from git metadata
Generates a git changelog, CLI or grunt plugin, inspired & based on Angular JS changelog generator
Generate a changelog from git commits. This is meant to be used so that for every patch, minor, or major version, you update the changelog prior to running
npm version
so that the git tag contains the commit that updated both the changelog and version.
hooks
Pre-commit hooks let you run checks before allowing a commit (e.g. JSLint or check Test Coverage).
Automatically install pre-commit / pre-push hooks in your git repo
Git hooks made easy
cheatsheets, faq, how-to
A list of cool features of Git and GitHub. http://git.io/sheet
what to do when things go wrong
online tools
utils
GIT utilities – repo summary, repl, changelog population, author commit percentages and more
Good-lookin’ diffs. Actually… nah… The best-lookin’ diffs.
Serves files from raw.githubusercontent.com, but with the correct content types. https://rawgit.com/
github
Tool for visualizing GitHub profiles https://github-profile-summary.com/
watching github repo releases
coderelease.io (can’t find who is behind the service)
releaser.richardhagen.no (Richard87/releaser)
winabeer.com (vfeskov/WinABeer)
Theses tools watch for github release or tags. They can miss somes releases.
Watching releases from packages manager should be more effectives.


| 12 Jan 1893 |
Hermann Goering born, Rosenheim, Bavaria. |
| 1904 |
Sent to boarding school, Ansbach, Franconia. |
| 1914 |
Enters the Wehrmacht. |
| 1918 |
Becomes commander of the Red Baron's former squadron. |
| 3 Feb 1922 |
Hermann Goering and Baroness Karin von Fock-Kantzow marry, Munich. |
| Dec 1922 |
Hermann Goering appointed to lead the S.A. (Brownshirts.) |
| Aug 1923 |
Mother dies. |
| 1925 |
Becomes a morphine addict. |
| Sep 1925 |
Enters Långbro mental hospital, Sweden. |
| Sep 1925 |
Becomes a morphine addict. |
| 1927 |
Returns to Germany. |
| 1928 |
Wins a seat in the Reichstag. |
| 17 Oct 1931 |
Wife Carin dies of tuberculosis. |
| 26 Oct 1933 |
Elected President of Reichstag. |
| 26 Apr 1933 |
Hermann Goering founds the Gestapo. |
| 30 Jun 1934 |
Hermann Goering assists in the Night of the Long Knives. |
| 19 Apr 1935 |
Harmann Goering and actress Emmy Sonnemann marry. |
| 2 Jun 1938 |
Daughter Edda born, only child. |
| 19 Jun 1940 |
Becomes Reichsmarschall. |
| 31 Jul 1941 |
Orders Heinrich Himmler and Reinhard Heydrich to bring "about a complete solution of the Jewish question in the German sphere of influence in Europe." |
| 9 May 1945 |
Captured by the American Seventh Army. |
| Mar 1946 |
Wife Emmy Sonnemann released from prison, Straubing. |
| 15 Oct 1946 |
Commits suicide with a poison capsule, on the day he is to be hanged. |
| 1967 |
Contents of a note released, explaining that the poison capsule was hidden in a pomade container. |
| 8 Jun 1973 |
Wife Emmy Sonnemann dies, Munich. Attorney Melvin Belli handles the estate. |


Number of Killed During Riots in Bolivia Rises to 7 - Reports
BRASILIA (Sputnik) - Seven people were killed during protests and riots in Bolivia, El Deber news portal reported on Tuesday, citing the country's prosecutor general's office.
According to previous reports, two people were killed.
Two people were killed in La Paz, two in Santa Cruz and three in Cochabamba.
A spokesperson for local rescue services said that 12 people, injured in the protests, remained in hospitals.
According to the police, 169 people were detained for participating in the riots.
After the entire leadership of Bolivia resigned, riots intensified in the country, accompanies by arson and attacks on the homes of officials, mainly in the largest cities.


| Figure 1 |
Archaeological sites and radiocarbon data: ( a) Kernel-smoot ... |
| Figure 2 |
Test of summed probability distribution of calibrated archae ... |
| Figure 3 |
Permutation test of regional summed probability distribution ... |
| Figure 4 |
Correlating variance in Austral Summer (December-January-Feb ... |


PINK PANTHER
CSV upload
Is alive?
Get your QR
URL Shortener
A front-end example page for the project
Check periodically
I want a QR
Short me!


--- layout: post title: In the hall of fame tags: - ego status: publish type: post published: true meta: {} --- Growing Blogs « WordPress.com
January 29, 2007: Growing BlogsThe Internet has a long memory. Someone recently got to my blog by finding this old entry


| Package | Description |
|---|---|
| org.jdesktop.core.animation.demos | |
| org.jdesktop.core.animation.timing |
Core classes of the Timing Framework; these classes provide the base
functionality that all animations will use.
|
| org.jdesktop.core.animation.timing.triggers |
A simple mechanism for starting animations when specific events occur.
|
| org.jdesktop.swing.animation.demos | |
| org.jdesktop.swing.animation.timing.triggers |
A simple mechanism for starting animations when specific Swing events occur.
|
| Modifier and Type | Method and Description |
|---|---|
void |
RaceSoundEffects.begin(Animator source) |
void |
RaceSoundEffects.end(Animator source) |
void |
RaceSoundEffects.repeat(Animator source) |
void |
RaceSoundEffects.reverse(Animator source) |
void |
RaceSoundEffects.timingEvent(Animator source,
double fraction)
This method figures out when the car hits one of the turns and plays the
turn clip appropriately
|
| Modifier and Type | Method and Description |
|---|---|
Animator |
Animator.Builder.build()
Constructs an animation with the settings defined by this builder.
|
| Modifier and Type | Method and Description |
|---|---|
void |
TimingTargetAdapter.begin(Animator source) |
void |
TimingTarget.begin(Animator source)
Called once when the animation begins.
|
Animator.Builder |
Animator.Builder.copy(Animator from)
Copies all values from the passed animator into this builder not
including its timing source.
|
Animator.Builder |
Animator.Builder.copy(Animator from,
boolean copyTargets)
Copies all values from the passed animator into this builder not
including its timing source.
|
void |
TimingTargetAdapter.end(Animator source) |
void |
TimingTarget.end(Animator source)
Called once when the animation ends.
|
void |
TimingTargetAdapter.repeat(Animator source) |
void |
TimingTarget.repeat(Animator source)
Called when the animation repeats the animation cycle.
|
void |
TimingTargetAdapter.reverse(Animator source) |
void |
TimingTarget.reverse(Animator source)
Called when a running animation is reversed via
reverseNow() . |
void |
TimingTargetAdapter.timingEvent(Animator source,
double fraction) |
void |
TimingTarget.timingEvent(Animator source,
double fraction)
This method will receive all of the timing events during an animation.
|
| Modifier and Type | Method and Description |
|---|---|
static Trigger |
TimingTrigger.addTrigger(Animator source,
Animator target,
TimingTriggerEvent event)
Creates a non-auto-reversing timing trigger and adds it as a target to the
source animation.
|
static Trigger |
TimingTrigger.addTrigger(Animator source,
Animator target,
TimingTriggerEvent event,
boolean autoReverse)
Creates a timing trigger and adds it as a target to the source animation.
|
| Modifier and Type | Method and Description |
|---|---|
void |
SplineInterpolatorTest.begin(Animator source) |
void |
RaceBasic.begin(Animator source) |
void |
FadingButtonTF.begin(Animator source) |
void |
SplineInterpolatorTest.end(Animator source) |
void |
RaceBasic.end(Animator source) |
void |
FadingButtonTF.end(Animator source) |
void |
FadingButtonTF.repeat(Animator source) |
void |
FadingButtonTF.reverse(Animator source) |
void |
SplineInterpolatorTest.timingEvent(Animator source,
double fraction)
Calculate the real fraction elapsed and output that along with the fraction
parameter, which has been non-linearly interpolated.
|
void |
RaceBasic.timingEvent(Animator source,
double fraction)
Calculate and set the current car position based on the animation fraction.
|
void |
FadingButtonTF.timingEvent(Animator source,
double fraction)
This method sets the alpha of our button to be equal to the current elapsed
fraction of the animation
|
| Modifier and Type | Method and Description |
|---|---|
static Trigger |
TriggerUtility.addActionTrigger(java.lang.Object object,
Animator target)
Creates an action trigger and adds it as an
ActionListener to the
passed object. |
static Trigger |
TriggerUtility.addFocusTrigger(javax.swing.JComponent component,
Animator target,
FocusTriggerEvent event)
Creates a non-auto-reversing focus trigger and adds it as a
FocusListener to the passed component. |
static Trigger |
TriggerUtility.addFocusTrigger(javax.swing.JComponent component,
Animator target,
FocusTriggerEvent event,
boolean autoReverse)
Creates a focus trigger and adds it as a
FocusListener to the
passed component. |
static Trigger |
TriggerUtility.addMouseTrigger(javax.swing.JComponent component,
Animator target,
MouseTriggerEvent event)
Creates a non-auto-reversing mouse trigger and adds it as a
MouseListener to the passed component. |
static Trigger |
TriggerUtility.addMouseTrigger(javax.swing.JComponent component,
Animator target,
MouseTriggerEvent event,
boolean autoReverse)
Creates a mouse trigger and adds it as a
MouseListener to the
passed component. |
static Trigger |
TriggerUtility.addTimingTrigger(Animator source,
Animator target,
TimingTriggerEvent event)
Creates a non-auto-reversing timing trigger and adds it as a target to the
source animation.
|
static Trigger |
TriggerUtility.addTimingTrigger(Animator source,
Animator target,
TimingTriggerEvent event,
boolean autoReverse)
Creates a timing trigger and adds it as a target to the source animation.
|


| Company Name | International Business Machines Corp |
| Stock Ticker Symbol | IBM |
| Stock Exchange Code | NYSE |
| Company Start Date | 1962-01-02 |
| Description | International Business Machines Corp International Business Machines CorpInternational Business Machines CorpInternational Business Machines CorpInternational Business Machines CorpInternational Business Machines Corp International Business Machines CorpInternational Business Machines CorpInternational Business Machines CorpInternational Business Machines Corp International Business Machines CorpInternational Business Machines CorpInternational Business Machines CorpInternational Business Machines Corp |
| Stock Ticker Symbol | IBM |
| Trading Day | 2020-09-18 |
| Previous Closing Price | 124.92 |
| Opening Price | 124.26 |
| High Price | 124.92 |
| Low Price | 122.65 |
| Last Price | 122.76 |
| Change | -2.16 |
| Change Percent | -1.73% |
| Number of Shares Traded | 5391570 |
|
Digital pregnancy tests Publish Date: 09/04/2020 See Original = |
|
| https://www.tiingo.com= https://www.tiingo.com https://www.tiingo.com https://www.tiingo.com https://www.tiingo.com https://www.tiingo.c | |
| https://www.tiingo.com= https://www.tiingo.com https://www.tiingo.com https://www.tiingo.com https://www.tiingo.com https://www.tiingo.c | |
| https://www.tiingo.com= https://www.tiingo.com https://www.tiingo.com https://www.tiingo.com https://www.tiingo.com https://www.tiingo.c | |
| https://www.tiingo.com= https://www.tiingo.com https://www.tiingo.com https://www.tiingo.com https://www.tiingo.com https://www.tiingo.c |


|
| int | findState (int left, int right) |
| | Determines current state given sensor readings. More...
|
| |
| int | decideAction (int state) |
| | Decides an action for the robot to do. Either randomly chosen or chosen with Q table. More...
|
| |
| int | assignReward (int prevAction, bool crash) |
| | Assigns a reward for updating the table depending on previous action and if crashed. More...
|
| |
| int | maxFuture (int state) |
| | Finds the max Q value for a given state, used in update equation. More...
|
| |
| void | updateTable (int prevAction, int prevState, bool crash, int state) |
| | Updates the Q table after an action has been taken for a given state Want to update the table based on where robot was, what it did, and where it is now. More...
|
| |
| void | Train () |
| | Training the Q table for a given number of iterations. More...
|
| |
| void | Perform () |
| | Uses trained Q table to explore environment. Each state always has one corresponding action. More...
|
| |
|
|
int | state |
| |
|
int | action |
| |
|
int | reward |
| |
|
int | Q [4][3] = { } |
| |
|
double | alpha |
| |
|
double | gamma |
| |
| int Qtable::assignReward |
( |
int |
prevAction, |
|
|
bool |
crash |
|
) |
| |
Assigns a reward for updating the table depending on previous action and if crashed.
- Parameters
-
| int | previous action, bool crash. crash = true means previous action caused a crash |
- Returns
- appropriate reward depending on what happened
| int Qtable::decideAction |
( |
int |
state | ) |
|
Decides an action for the robot to do. Either randomly chosen or chosen with Q table.
- Parameters
-
| int | state. Current state of the robot. |
- Returns
- Action that has been decided. Either 0,1 or 2 since robot only has 3 possible actions.
| int Qtable::findState |
( |
int |
left, |
|
|
int |
right |
|
) |
| |
Determines current state given sensor readings.
- Parameters
-
| int | left and right, either 0 or 1 representing 0 for detect nothing and 1 for detect something |
- Returns
- Current state. Either 0,1,2 or 3 depending on sensor combination.
| int Qtable::maxFuture |
( |
int |
state | ) |
|
Finds the max Q value for a given state, used in update equation.
- Parameters
-
| int | state. Current state of the robot. |
- Returns
- Max Q value for the current state (max value of row).
Uses trained Q table to explore environment. Each state always has one corresponding action.
- Parameters
-
- Returns
- none
Training the Q table for a given number of iterations.
- Parameters
-
- Returns
- none
| void Qtable::updateTable |
( |
int |
prevAction, |
|
|
int |
prevState, |
|
|
bool |
crash, |
|
|
int |
state |
|
) |
| |
Updates the Q table after an action has been taken for a given state Want to update the table based on where robot was, what it did, and where it is now.
- Parameters
-
| int | previous state, previous action, state, bool crash, true if crashed |
- Returns
- none
The documentation for this class was generated from the following files:
- /home/viki/workspace/Midterm/cpp-boilerplate/include/Qclass.h
- /home/viki/workspace/Midterm/cpp-boilerplate/QLearning/Qclass.cpp


I am honored to receive Oracle's Technologist of the Year: Developer award, formerly Oracle Magazine Editors’ Choice Awards.
Technologist of the Year Award is given for individuals for their technical achievements with regard to Oracle products.
As opposed to community based awards, to win this award one must be nominated by himself or his company. There are several award categories: Developer, DBA, IT Manager etc., and many nominations per category. I have been nominated by my company and am happy to have won the award in the Developer category.
Allow me to take the pleasant opportunity to make some acknowledgements.
makam
Most people know me as a MySQL consultant/instructor/speaker/something. I wear several hats; in one I am co-founder and CTO of SFNK, an Israeli company providing the makam system, a specialized service providing valuable insight on our customers increasing need: the need to know what people say about them on the internet. Our product is running for 7 years now, is serving large amounts of data, and is operating several MySQL server nodes.
I've been working with MySQL for over 11 years, but it is throughout my work in makam that I have come to look deeply into query & server optimization, backups, scale out, design etc. We had some demanding features that pushed me into developing scripts and solutions for MySQL, released as open source. Throughout my experience as a DBA (I'm originally a developer) I came to appreciate the MySQL product, on one had, and find usability fallacies, on the other. The fact that our product is DB centric put me in the position to learn as much as I could about SQL.
I thank makam for this. This product has been the test bed for many of my experiments. Thankfully I never erased the database!
The MySQL community
Though I just recently wrote this, I'm happy to acknowledge it again.
Since my work is based off open source products, open source projects, free advice, professional blogs, I have gained much from the open source world in general, and from the MySQL community in particular, that made me want to share some back.
Its wonderful to have people read and comment on my blog posts and ideas; download, use and provide feedback on code I write; attend an occasional talk. All this pushes me in my work. I honestly hope to have provided with valuable content, code or assistance, to just anyone. Anyone and someone who would benefit from the richness of open source and knowledge sharing.
I am humbled by the advantage I got from the community. I have found names behind the community's first anonymous appearance. I've found people who are easy to reach, happy to respond, generous in their advice, experts in their field.
Thank you.
Oracle & MySQL
An observation on this award is that it is given to a MySQL technologist. I have never worked with Oracle (as in the RDBMS) technologies, and my entire nomination is based on my experience with MySQL.
I see significance in this, and believe it reaffirms the focus and attention MySQL gets from Oracle. It makes me happy as a MySQL user and as a MySQL community member.
I thank Oracle for giving me this honor.
comments powered by Disqus


[gecode-users] independent subproblems
Guido Tack
tack at ps.uni-sb.de
Wed Apr 9 15:12:57 CEST 2008
Malcolm Ryan wrote:
> Reading your paper that sounds like exactly what I'm looking for. It's
> still at the experimental stage, I take it? Any plans to integrate it?
Plans, yes, time to do it, no ;-) No, seriously, we do have plans to
at least ship it as a contribution that you could download and try
out, but I can't make any promises when that's going to happen.
Cheers,
Guido
More information about the gecode-users
mailing list


Make code get compiled by $compile service after highlighting by making compile expression result truthy. Note Works with hljs, source and include.
$compile
compile
hljs
source
include


We're an independent game company based in Sweden, trying to make familiar but intriguing game experiences.
We are just in the start-up phase, working on our first game called Revelation. It is about Lucifer and our interpretation of how he became the king of Hell.


Wii Wireless Sensor Bar Battery-less mod
Earlier today I got out the ol’ wii to setup for my younger brother and low and behold the wireless rechargable sensor bar had finally given up the ghost. These sensor bars are relatively simple so I figured the most likely reason it died was the old batteries. I cracked it open and the NiMH batteries had indeed begun leaking. Desoldering the batteries allowed the bar to power on properly, but it was constantly trying to charge the nonexistant battery pack. If I tried activating the bar it would simply restart into charging mode. I had to trick the bar into thinking that the batteries (That were no longer there) were fully charged. If you take some thin wire and solder it between the positive of the battery pad and the 5volt input from the usb mini jack, it will work correctly (Obviouly it would have to allways be plugged into usb, but that was not a problem for me.) This is a rather ugly hack, but it was done on a ten year old consumer product, so I don’t really care! Hope this helped you out.


Overview
Package
Class
Use
Tree
Deprecated
Index
Help
PREV LETTER
NEXT LETTER
FRAMES
NO FRAMES
All Classes
A
B
C
D
E
F
G
I
L
M
N
O
P
R
S
T
U
V
W
L
labelIndex
- Variable in class edu.isi.karma.modeling.semantictypes.mycrf.common.
Node
labelIndex
- Variable in class edu.isi.karma.modeling.semantictypes.mycrf.fieldonly.
LblFtrPair
labels
- Variable in class edu.isi.karma.modeling.semantictypes.mycrf.globaldata.
GlobalDataFieldOnly
LargeNumber
- Class in
edu.isi.karma.modeling.semantictypes.mycrf.math
This class represents the large numbers (as large as 10^1000) which are generated due to exponential computations.
LargeNumber(double)
- Constructor for class edu.isi.karma.modeling.semantictypes.mycrf.math.
LargeNumber
LargeNumber(double, int)
- Constructor for class edu.isi.karma.modeling.semantictypes.mycrf.math.
LargeNumber
LargeNumber(LargeNumber)
- Constructor for class edu.isi.karma.modeling.semantictypes.mycrf.math.
LargeNumber
LBFGS
- Class in
edu.isi.karma.modeling.semantictypes.mycrf.optimization
This class implements limited memory BFGS.
LBFGS(int)
- Constructor for class edu.isi.karma.modeling.semantictypes.mycrf.optimization.
LBFGS
LblFtrPair
- Class in
edu.isi.karma.modeling.semantictypes.mycrf.fieldonly
This class represents a feature function.
LblFtrPair(int, String)
- Constructor for class edu.isi.karma.modeling.semantictypes.mycrf.fieldonly.
LblFtrPair
Lexer
- Class in
edu.isi.karma.modeling.semantictypes.sl
This class is used to split field into tokens.
Lexer()
- Constructor for class edu.isi.karma.modeling.semantictypes.sl.
Lexer
ListOps
- Class in
edu.isi.karma.modeling.semantictypes.myutils
This class provides utility methods for sorting small lists based on another list containing scores for them.
ListOps()
- Constructor for class edu.isi.karma.modeling.semantictypes.myutils.
ListOps
log(LargeNumber)
- Static method in class edu.isi.karma.modeling.semantictypes.mycrf.math.
LargeNumber
log10(LargeNumber)
- Static method in class edu.isi.karma.modeling.semantictypes.mycrf.math.
LargeNumber
logLikelihood()
- Method in class edu.isi.karma.modeling.semantictypes.mycrf.graph.
GraphFieldOnly
logLikelihoodGradient(double[])
- Method in class edu.isi.karma.modeling.semantictypes.mycrf.graph.
GraphFieldOnly
Overview
Package
Class
Use
Tree
Deprecated
Index
Help
PREV LETTER
NEXT LETTER
FRAMES
NO FRAMES
All Classes
A
B
C
D
E
F
G
I
L
M
N
O
P
R
S
T
U
V
W


{% extends "base.html" %}
{% block content %}
Daily Summary for {{ name.capitalize() }}
{% include "includes/progress_bar.html" %}
| Total Solved: |
{{ total_solved }} |
| Total Attempts: |
{{ total_attempts }} |
| Average Solve Time: |
{{ "{:0.3f}".format(avg_solve_time) }} seconds |
Problem Details:
| ID |
Problem |
Solution |
Attempts |
Points |
Elapsed Time |
{% for problem in problems %}
| {{ problem.id }} |
{{ problem.problem }} |
{{ problem.solution }} |
{{ problem.attempts }} |
{{ problem.determine_point_value() }} |
{{ "{:0.3f}".format(problem.elapsed) }} |
{% endfor %}
{% endblock %}


The OWSP experience: #TryHarder #TryAgain
Posted on December 5, 2020
It's been almost 1 month since I attempted and passed my OSWP. Here are my thoughts about the famous "meme" certification.
The Good - The Information
As someone with only a vague knowledge of how wireless communication works, the course was extremely informative in explaining and detailing how things work and the history of wireless communication. If I were to judge the course as an informative/historical book, it would be a great book. Unfortunately, things start to fall apart when it gets to the practical part. The self built lab is a double edged sword. On one hand, I loved not feeling the time pressure of the regular OffSec labs and being able to take my time. Setting it up and pulling all the power and ethernet cables around made feel like an old school sysadmin. On the other hand...
The Bad - The Lab
The suggested hardware for the lab is ancient and you'll really struggle to find it. If you don't live in a place with a large second hand market, you might be entirely out of luck, like I was.
I asked around if people had any old router that supporter WEP and borrowed a DIR 300 from a friend. As for WiFi NIC, I used a tp-link tl-wn722n v3 from a previous project. With the spare ethernet cables I had lying around, I was able to set up my lab without spending any money.
OffSec suggests using their backtrack image, but I couldn't get it to recognize or install my WiFi NIC drivers. I didn't really have the hardware available to just install it on a new laptop, so after a lot of frustration and headscratching I ended up installing kali on a rasPi and connecting to it via SSH.
I figured this would match the exam environment quite nicely. Most of the tools used in the exercises work on rasPi kali, and the ones that don't aren't really relevant.
The second bad part is the content. It is old. Very old. I've personally never seen a WEP network in my entire life, and I'm 26 for the record. I couldn't even get my router into all the WEP configs the lab described. So the lab experience was half lived at best.
The Great - Everything you need
This is probably the only OffSec certification that teaches you everything you need to pass the exam, so that's convenient. If you just really focus on the exercises, you should be in great shape for the exam. Setting up the lab took me about a week, and it took me another 2 weeks to go through the videos and the practice labs.
The Exam
The exam takes 4 hours. Given my luck, all the lab exercises that I couldn't set up were on my exam. Regardless, after going back to my notes, I was able to complete the exam in under 2 hours so I used the remaining time to have lunch and go over the exercises again and take proper screenshots. One peculiar thing about the exam is that things might not... work. Even if you did everything right, it might not work on first attempt. Or second attempt. Third attempt usually does it. So all I can say is: double check your commands and.. Try Again. Inconvenient and can be a cause of lots of unwanted stress.
Final Thoughts
As a disclaimer, my employer paid for the exam. I originally only planned to get my CRTP during 2020, but I was able to pass with just one month of lab time and had some training funds left over. On a whim I decided to get my OSWP after a coworker got his recently too. I regret the headaches I got while trying to get Backtrack and some of the labs exercises to work, but overall I feel I learned some very crucial concepts about WiFi. I'm not quite sure I'd recommend the course, it is a tad expensive for what it is and it is quite outdated. You still get the OffSec brand quality though which evens the offer a bit. If you don't know much about WiFi and have some cash to burn, then consider it, it's not a major time investment and you'll learn some cool stuff. Otherwise, prioritize other certifications. As an alternative, I heard good things about the WiFi course on Pentester Academy, although I personally haven't attempted it: https://www.pentesteracademy.com/course?id=9 WiFi hasn't really changed that much over the years. I wouldn't say that OSWP prepared me for a WiFi engagement, but it did provide a foundation solid enough so that I could build my own toolkit and methodology. Unfortunately, most Wifi assessments are capturing the WPA2 handshakes, tossing them into hashcat and praying for the best. I'd like to see an updated version cover stuff like BlueTooth and Zigbee, more focused on IoT communications, but right now I can only hope.


Autonomy K2 v6: Indexing an ODBC Database
Last Updated Mar 2009
By: Mark Bennett & Clinton Allen, New Idea Engineering Inc., Volume 4 Number 2 - April 2007
This month Clinton gives us a Quick Start for building a K2 collection with the ODBC driver and Vspider. K2 is currently sold by Autonomy, though some people still refer to it as Verity K2.
Step 1: Introduction / Understanding the Process
Indexing a database using ODBC and vspider requires more configuration than most tasks using vspider, and the documentation can be confusing. Here we provide an example to help get something running and to serve as base for further development. To keep it simple we focus on indexing records from the sample database table EMP provided by Oracle. We will only need to make minimum changes to the sample K2 ODBC style files, using default values where ever possible. In this article we're only going show how to index one text column in the table; of course we will also have to index one other column to serve as the primary key. At the end of the article we've included a link to download the full set of edited style files configured to index all of the columns of EMP.
Although the steps listed below may look complex, they actually break down into a few logical tasks:
- Configure ODBC to access your database
- Tell K2 which database to connect to, and which fields to index
- Have K2 vspider fetch the records and index them
- Use K2 rcvdk to do a test search, to verify that the data was indexed
Quick Links / Summary of Steps:
- Step 1: Introduction / Understanding the Process
- Vocabulary Terms
- Step 2: Information You Will Need
- Sidebar: Two Flavors of Oracle Drivers
- Step 3: Tools
- Sidebar: DSN vs. SID - What's the Difference?
- Step 4: Defining ODBC Data Sources
- Step 5: Copy Template Style Files
- Step 6: Add Fields to STYLE.SFL and STYLE.UFL
- Step 7: Add the ODBC DSN into ODBCMON.CFG
- Step 8: Edit VGWODBC.CFG
- Step 9: Populating Fields with VGWODBC.VGW
- Step 10: Define the Virtual Document in STYLE.DFT
- Step 11: Define SQL Statement in FREESQL_1.TXT
- Step 12: Setup Database Authentication in CRED.DAT
- Step 13: Start the Indexing with the VSPIDER Command Line Tool
- Step 14: Check the Results with the RCVDK Command Line Tool
- Step 15: Review and Links to Style Files
Two other points to keep in mind:
- There is no single place where you enter an entire SQL statement. K2/vspider builds up a SQL statement automatically, from within its own logic, and using some snippets of SQL that you can provide in various files.
- When indexing with K2 and vspider, we've seen it output a lot of errors in log files that look scary, but which ultimately can be ignored. Our point is, check the final results of the index with the K2 search tools. If they look correct, don't worry as much about the errors in the log file. In particular, we believe some of these errors are caused by gaps in non-sequential primary keys. Learn to interpret the log file correctly, and separate out the "common" one from the truly unusual ones.
Step 2: Information You Will Need
There are several pieces of information needed to configure K2 and ODBC indexing.
- You'll need the DSN (Database Source Name). In this article the DSN is "EMP_TABLE"
- If a DSN has not been configured, then you'd need to define it. To define a DSN you would need to know the Oracle server's TCP/IP name or address, and the Oracle SID for the demo database.
- The name of the table that you want to index. In our case EMP.
- The names and types of the columns in the table, including the table's primary key which will map to K2's primary key (VdkVgwKey). For the EMP table the primary key EMP_NO. We'll index one text field, JOB, from the EMP table.
- Accessing a database requires a username and password. For a default Oracle installation the demo username is SCOTT, with password TIGER. These will need to go into an encrypted security file created in step 12.
Step 3: Tools
There are several useful tools for obtaining this information and trouble shooting.
- You'll need a plain text editor for editing the style files. For example, you can use Notepad on Windows. On Unix/Linux you can use vi or Emacs.
- The Oracle command-line client SQLPLUS is handy for verifying the connection to the database. If it isn't installed on the machine running K2, then you may need to run it on the server with the Oracle database or from a PC with the Oracle client tools installed. Once connected you can also examine the tables and columns targeted for indexing. You can also compare the results of a SQL query to the one submitted by vspider.
- On Windows you will use the ODBC Data Source Administrator (ODSA) to configure and test the ODBC connection. The ODSA has a "test a connection" button to check that the ODBC credentials and drivers On other operating systems such as Solaris you will need to edit the odbc.ini file. (discussed elsewhere) This is how ODBC DSNs are mapped into database specific settings, such as the Oracle SID, port numbers and other client-server interaction and drivers.
- The Oracle Enterprise Manager (OEM) is used to examine and change Oracle system settings. This is a graphical tool and must be run on a windowing environment such as Windows, X-Windows or on the Mac. If OEM is not installed on the machine running K2, or if the K2 machine is only accessed in a character mode such as via telnet, it can be run from another machine where Oracle is installed. The OEM allows examination of the table and columns schema and contents. If for instance the spelling of a column name is wrong than the database can't be opened, and vspider gives a rather generic error which can also be caused by the wrong username or DNS.
Also the trace log should be activated in the ODSA, under the Tracing tab, or in the odbc.ini file. This log is useful for showing the complete SQL query and troubleshooting problems with vspider opening the database.
[ back to top ]
Step 4: Defining ODBC Data Sources
Step 4a: On Windows
As we mentioned, on Windows there is a tool called ODSA, the ODBC Data Source Administrator. This can be found under:
- Start
--> Control Panel --> Administrative Tools --> Data Sources (ODBC)
Fill in the blanks from the information you gathered in Step 2.
The ODSA has a "test a connection" button to check the ODBC credentials and drivers, and it allows you to change the SID, port numbers and other settings. On other operating systems such as Solaris this information is set in the odbc.ini file, which is discussed in the next section.
Step 4b: On Unix
On Unix you will need to define your data source in the odbc.ini file, and then setup environment variables to point to it.
Sample Oracle ODBC INI file: In the sample above, the bold text indicates the important lines that would need to be changed (or at least verified). The underlined text is what is likely to be site specific.
Although we've shown the default port for Oracle, this does seem to change for a fair percentage of sites.
The _ssol26 is for Solaris; if you are on Linux or some other flavor of Unix, that string would be different. That is generically referred to as _platform, or "underscore platform", where platform refers to the operating system.
Unix Environment Variables
For Verity to index data properly, there are some environment variables that need to be set correctly:
- PATH
- LD_LIBRARY_PATH
- ODBCINI
- - - Some other variables that you'll often need - - - - VDKHOME
- ORACLE_HOME
- JAVA_HOME
- CLASSPATH
The details of setting all these variables are beyond the scope of this article.
One final warning about Unix Environment Variables
When you login to an interactive shell to setup or debug problems, you may be getting a different set of environment variables than what automatic indexing scripts or web server processes see, because you may be running a different shell. This can happen when scripts are automatically run out of crontab, or started when the system boots or by inetd.
For example, you may use C-Shell with .cshrc to do your editing, but the nightly index scripts might be running in the Bourne shell with .login. We've also see a combination of some scripts running in Bash but the system picking up defaults from an unexpected .cshrc.
[ back to top ]
Step 5: Copy Template Style Files
Make a copy of the shipped ODBC style files to customize. In a standard installation these are in k2\common\styles\vgwodbc. For our example we've copied the vgwodbc directory to a directory emp_style in our sandbox and we'll modify those style files.
[ back to top ]
Step 6: Add Fields to STYLE.SFL and STYLE.UFL
First we add new collection fields to hold the database information. The rules for adding these fields are the same as for any other K2 project. The VdkVgwKey is already in the style.ddd, in step 8 we'll associate it with EMP_NO. So we need to add one field to hold the contents of the DB column JOB. We can just make it an alias of the existing varwidth "Title" field, already defined in the shipped style.sfl. Furthermore it's convenient to give each field the same name as the column. So in the style.sfl we need only to add a new alias directive to the Title definition resulting in:
-
varwidth: Title _sv
/alias = FTS_Title
/alias = dc:Title
/alias = vdk:Title
/alias = JOB # added for ODBC
The other fields required for indexing all of the EMP columns are in the style.ufl of the linked set.
[ back to top ]
Step 7: Add the ODBC DSN into ODBCMON.CFG
The DSN and some parameters that control its use are set in the DsnLimits section of odbcmon.cfg. In our example the DsnName is EMP_TABLE and we want the SecurityField to be public so we've changed the sample section of odbcmon.cfg to:
-
## Sample DsnLimits Section
DsnLimits:
{
DsnName: EMP_TABLE
# MaxConnects: 9
SecurityField: 0
# QuotedId: 0
}
Note "DsnLimits:" and the curly brackets are now uncommented; the other parameters we've left at their default values.
[ back to top ]
Step 8: Edit VGWODBC.CFG
The vgwodbc.cfg is where the indexed table and columns are specified by defining elements "gwview" and "gwfield"
Gwview has two parts:
- The DSN
- an alternate name used by K2.
We've set it to "EMP_TABLE EMPVIEW" The first gwfield is the primary key EMPNO with a modifier "gwpk" meaning the VdkVgwKey will be populated with it's value. Other needed database fields should be listed also--for now we add only JOB. So the edited lines in vgwodbc.cfg are:
-
gwview: EMP_TABLE EMPVIEW
{
## At least one field definition is required for each section.
## Each 'gwfield' becomes available for indexing and/or
## mapping to a VDK field.
## Setting up a primary key column
gwfield: EMPNO
/gwpk
gwfield: JOB #collection field
/table=EMP
/dbcolumn = JOB #oracle db name
}
Notice we've uncommented the opening curly bracket after the gwview: line. At the bottom of the vgwodbc.cfg there are a few lines concerning the file "freesql_1.txt" Uncomment the ones starting with "freesql:" and the next-to-last closing brace, so the last few lines appear as
-
## In ODBC gateway 5.0 and beyond an external file holds the
## parts of a query required to make a meaningful SQL statement.
## This file must be present and configured for each table. Note,
## this file is always assumed to be in the style directory.
freesql: freesql_1.txt
}
}
$$
In step 11 we'll create freesql_1.txt.
[ back to top ]
Step 9: Populating Fields with VGWODBC.VGW
The fields such as JOB were created to store the contents of the database columns and they need to be assigned values. This is done by copy directives to the gateway for each field/column combination added to the vgwodbc.vgw. A copy for the VdkVgwKey isn't needed, and the sample vgwodbc.vgw already contains a line for the _SECURITY collection field which needs to be left in. For JOB we add the one line "copy: JOB JOB." So the changed section of the vgwodbc.vgw looks like this:
-
copy: _VgwAccessType _SECURITY
# oracle column --> collection field
copy: JOB JOB
A copy statement is required for each field that is populated from the database. In the linked set we've added copy commands for all of EMP.
[ back to top ]
Step 10: Define the Virtual Document in STYLE.DFT
The style.dft is used to compose the virtual document that K2 uses for full-text search and viewing of each record. For a database it typically consists of fields printed in the virtual document.
The style.dft in the shipped vgwodbc style files has all the lines commented out except for matched curly braces, which should be left so. First we uncomment the VdkVgwKey line and using directives "field" and "constant" add JOB and some formatting. Thus the edited part of the style.dft appears as:
-
## constant keyword to add static strings and
## view controls to the virtual document.
constant: " "
## VDK internal field.
## This field will be indexed as
## part of the document as well.
field: VdkVgwKey
constant: "\n"
## Database field
constant: "JOB: "
field: JOB
constant: "\n"
The linked set style.dft has all the EMP fields.
[ back to top ]
Step 11: Define SQL Statement in FREESQL_1.TXT
When indexing, vspider submits a SQL statement to the server. The statement is contained in a text file with the default name of 'freesql_1.txt' residing in the source style directory ("emp_style" in our case). When the collection is created, the file is copied to the collection's style directory along with the other style files.
For our example, indexing all the records in EMP, the freesql_1.txt contains only the single line:
-
FROM EMP
Vspider prepends a SELECT to this. The complete SQL statement can be seen in the trace log. The name of this file is specified in the last line of the vgwodbc.cfg, and the line needs to be uncommented--done in step 9. The SQL statement must be on the first line of the file, a blank line at the beginning of this file results in a rather misleading error message E0-1514 " Cannot initialize table 'EMP_TABLE/EMPVIEW'... "
[ back to top ]
Step 12: Setup Database Authentication in CRED.DAT
Vspider needs the database username and password which it can read from an encrypted file whose default name is "cred.dat" created by the utility "savecred" located in the K2 bin directory.
An example command-line for our case is:
-
savecred -f cred.dat -t 0x4 -c user:scott -c password:tiger -c
(the previous command should be entered all on one line.)
repository:DBMS:EMP_TABLE:0x0dbc0000:0x0dbc:0
The user name is "scott" and the password is "tiger" The repository name is the same as the DNS name "EMP_TABLE" The hexadecimal characters should be entered exactly as shown. It's convenient to put this command into a shell script or batch command. Cred.dat should then be put into the source style directory used by vspider (emp_style for us), so at collection creation time the cred.dat will be copied into the collection's style directory. To use this file vspider needs the -auth2 option shown in step 13.
Note that savecred will append onto an existing cred.dat so it might save some grief in the development stage to delete an existing cred.dat before running it. Using "savecred -help" gives a usage dump. For changing the location and name of this file see the line 'CredFile: "local cred.dat" ' near the top of the odbcmon.cfg.
[ back to top ]
Step 13: Start the Indexing with the VSPIDER Command Line Tool
The minimum vspider command-line plus verbose logging is:
-
vspider -verbose -odbc -auth2 "emp_style\cred.dat" -collection empcoll -style emp_style
(the previous command should be entered all on one line.)
This creates the collection "empcoll" in the current working directory using the "emp_style" style files and indexes the records returned by the SQL query. The " start" option isn't needed. Note we are pointing to the auth file in the source style files. This file must be in the collection's style directory for use by the low-level ODBC gateway code, but the vspider command line can point to a copy, say, in the CWD.
You should get a fair amount of output to the console showing each record indexed due to the -verbose option.
[ back to top ]
Step 14: Check the Results with the RCVDK Command Line Tool
When vspider's finished it should give the number of records indexed. To check this and view the virtual documents you can use the utility "rcvdk" in the K2 bin directory.
For detailed information on rcvdk please see the article "Command Line K2: rcvdk" from Vol. 3 No. 4, Summer 2006.
First, at the command-line (for our collection empcoll in the CWD) enter:
-
rcvdk empcoll
This gives a message about opening the collection and then a prompt. Then enter "s" (without the quotes) to do a null search returning all the records in the collection; for a new collection this should be the same number as the number indexed by vspider.
-
RC> s (enter, by itself runs a null search, matching all docs)
(returns a document count)
RC> r (enter, to see the first screen of results)
You can also search for a specific word:
-
RC> s clerk (enter)
(returns a document count)
RC> r (enter, to see the first screen of results)
Then you can look at the matching documents (which may scroll by very fast).
-
RC> v 1 (enter)
1: odbc://EMP_TABLE/EMPVIEW/7934
[ odbc://EMP_TABLE/EMPVIEW/7934 ] JOB: CLERK
The document view should reflect the style.dft and the data in each record as shown by SQLPLUS.
To quit rcvdk just use the q command, followed by enter.
-
RC> q (enter)
Step 15: Review and Links to Style Files
Below we've included links to a complete set of style files. These are a bit different than those used in the article, in that they show how to index all of the fields from Oracle's EMP sample table.
- Windows: emp_style_allfields.zip
- Zip format, CR-LF, 19.1 KB (19,595 bytes)
- Unix: emp_style_allfields.tar
- Tar format, LF, 66.0 KB (67,584 bytes)


# -*- coding: utf-8 -*-
# Copyright (C) 2011-2018 by
# Aric Hagberg<EMAIL_ADDRESS># Dan Schult<EMAIL_ADDRESS># Pieter Swart<EMAIL_ADDRESS># All rights reserved.
# BSD license.
#
# Authors: Jordi Torrents<EMAIL_ADDRESS># Dan Schult<EMAIL_ADDRESS># Aric Hagberg<EMAIL_ADDRESS>"""Biconnected components and articulation points."""
import warnings as _warnings
from itertools import chain
import networkx as nx
from networkx.utils.decorators import not_implemented_for
__all__ = [
'biconnected_components',
'biconnected_component_edges',
'biconnected_component_subgraphs',
'is_biconnected',
'articulation_points',
]
[docs]@not_implemented_for('directed')
def is_biconnected(G):
"""Return True if the graph is biconnected, False otherwise.
A graph is biconnected if, and only if, it cannot be disconnected by
removing only one node (and all edges incident on that node). If
removing a node increases the number of disconnected components
in the graph, that node is called an articulation point, or cut
vertex. A biconnected graph has no articulation points.
Parameters
----------
G : NetworkX Graph
An undirected graph.
Returns
-------
biconnected : bool
True if the graph is biconnected, False otherwise.
Raises
------
NetworkXNotImplemented :
If the input graph is not undirected.
Examples
--------
>>> G = nx.path_graph(4)
>>> print(nx.is_biconnected(G))
False
>>> G.add_edge(0, 3)
>>> print(nx.is_biconnected(G))
True
See Also
--------
biconnected_components
articulation_points
biconnected_component_edges
is_strongly_connected
is_weakly_connected
is_connected
is_semiconnected
Notes
-----
The algorithm to find articulation points and biconnected
components is implemented using a non-recursive depth-first-search
(DFS) that keeps track of the highest level that back edges reach
in the DFS tree. A node `n` is an articulation point if, and only
if, there exists a subtree rooted at `n` such that there is no
back edge from any successor of `n` that links to a predecessor of
`n` in the DFS tree. By keeping track of all the edges traversed
by the DFS we can obtain the biconnected components because all
edges of a bicomponent will be traversed consecutively between
articulation points.
References
----------
.. [1] Hopcroft, J.; Tarjan, R. (1973).
"Efficient algorithms for graph manipulation".
Communications of the ACM 16: 372–378. doi:10.1145/362248.362272
"""
bcc = list(biconnected_components(G))
if len(bcc) == 1:
return len(bcc[0]) == len(G)
return False # Multiple bicomponents or No bicomponents (empty graph?)
# if len(bcc) == 0: # No bicomponents (it could be an empty graph)
# return False
# return len(bcc[0]) == len(G)
[docs]@not_implemented_for('directed')
def biconnected_component_edges(G):
"""Return a generator of lists of edges, one list for each biconnected
component of the input graph.
Biconnected components are maximal subgraphs such that the removal of a
node (and all edges incident on that node) will not disconnect the
subgraph. Note that nodes may be part of more than one biconnected
component. Those nodes are articulation points, or cut vertices.
However, each edge belongs to one, and only one, biconnected component.
Notice that by convention a dyad is considered a biconnected component.
Parameters
----------
G : NetworkX Graph
An undirected graph.
Returns
-------
edges : generator of lists
Generator of lists of edges, one list for each bicomponent.
Raises
------
NetworkXNotImplemented :
If the input graph is not undirected.
Examples
--------
>>> G = nx.barbell_graph(4, 2)
>>> print(nx.is_biconnected(G))
False
>>> bicomponents_edges = list(nx.biconnected_component_edges(G))
>>> len(bicomponents_edges)
5
>>> G.add_edge(2, 8)
>>> print(nx.is_biconnected(G))
True
>>> bicomponents_edges = list(nx.biconnected_component_edges(G))
>>> len(bicomponents_edges)
1
See Also
--------
is_biconnected,
biconnected_components,
articulation_points,
Notes
-----
The algorithm to find articulation points and biconnected
components is implemented using a non-recursive depth-first-search
(DFS) that keeps track of the highest level that back edges reach
in the DFS tree. A node `n` is an articulation point if, and only
if, there exists a subtree rooted at `n` such that there is no
back edge from any successor of `n` that links to a predecessor of
`n` in the DFS tree. By keeping track of all the edges traversed
by the DFS we can obtain the biconnected components because all
edges of a bicomponent will be traversed consecutively between
articulation points.
References
----------
.. [1] Hopcroft, J.; Tarjan, R. (1973).
"Efficient algorithms for graph manipulation".
Communications of the ACM 16: 372–378. doi:10.1145/362248.362272
"""
for comp in _biconnected_dfs(G, components=True):
yield comp
[docs]@not_implemented_for('directed')
def biconnected_components(G):
"""Return a generator of sets of nodes, one set for each biconnected
component of the graph
Biconnected components are maximal subgraphs such that the removal of a
node (and all edges incident on that node) will not disconnect the
subgraph. Note that nodes may be part of more than one biconnected
component. Those nodes are articulation points, or cut vertices. The
removal of articulation points will increase the number of connected
components of the graph.
Notice that by convention a dyad is considered a biconnected component.
Parameters
----------
G : NetworkX Graph
An undirected graph.
Returns
-------
nodes : generator
Generator of sets of nodes, one set for each biconnected component.
Raises
------
NetworkXNotImplemented :
If the input graph is not undirected.
See Also
--------
k_components : this function is a special case where k=2
bridge_components : similar to this function, but is defined using
2-edge-connectivity instead of 2-node-connectivity.
Examples
--------
>>> G = nx.lollipop_graph(5, 1)
>>> print(nx.is_biconnected(G))
False
>>> bicomponents = list(nx.biconnected_components(G))
>>> len(bicomponents)
2
>>> G.add_edge(0, 5)
>>> print(nx.is_biconnected(G))
True
>>> bicomponents = list(nx.biconnected_components(G))
>>> len(bicomponents)
1
You can generate a sorted list of biconnected components, largest
first, using sort.
>>> G.remove_edge(0, 5)
>>> [len(c) for c in sorted(nx.biconnected_components(G), key=len, reverse=True)]
[5, 2]
If you only want the largest connected component, it's more
efficient to use max instead of sort.
>>> Gc = max(nx.biconnected_components(G), key=len)
See Also
--------
is_biconnected
articulation_points
biconnected_component_edges
Notes
-----
The algorithm to find articulation points and biconnected
components is implemented using a non-recursive depth-first-search
(DFS) that keeps track of the highest level that back edges reach
in the DFS tree. A node `n` is an articulation point if, and only
if, there exists a subtree rooted at `n` such that there is no
back edge from any successor of `n` that links to a predecessor of
`n` in the DFS tree. By keeping track of all the edges traversed
by the DFS we can obtain the biconnected components because all
edges of a bicomponent will be traversed consecutively between
articulation points.
References
----------
.. [1] Hopcroft, J.; Tarjan, R. (1973).
"Efficient algorithms for graph manipulation".
Communications of the ACM 16: 372–378. doi:10.1145/362248.362272
"""
for comp in _biconnected_dfs(G, components=True):
yield set(chain.from_iterable(comp))
[docs]@not_implemented_for('directed')
def biconnected_component_subgraphs(G, copy=True):
"""DEPRECATED: Use ``(G.subgraph(c) for c in biconnected_components(G))``
Or ``(G.subgraph(c).copy() for c in biconnected_components(G))``
"""
msg = "connected_component_subgraphs is deprecated and will be removed" \
"in 2.2. Use (G.subgraph(c).copy() for c in biconnected_components(G))"
_warnings.warn(msg, DeprecationWarning)
for c in biconnected_components(G):
if copy:
yield G.subgraph(c).copy()
else:
yield G.subgraph(c)
[docs]@not_implemented_for('directed')
def articulation_points(G):
"""Yield the articulation points, or cut vertices, of a graph.
An articulation point or cut vertex is any node whose removal (along with
all its incident edges) increases the number of connected components of
a graph. An undirected connected graph without articulation points is
biconnected. Articulation points belong to more than one biconnected
component of a graph.
Notice that by convention a dyad is considered a biconnected component.
Parameters
----------
G : NetworkX Graph
An undirected graph.
Yields
------
node
An articulation point in the graph.
Raises
------
NetworkXNotImplemented :
If the input graph is not undirected.
Examples
--------
>>> G = nx.barbell_graph(4, 2)
>>> print(nx.is_biconnected(G))
False
>>> len(list(nx.articulation_points(G)))
4
>>> G.add_edge(2, 8)
>>> print(nx.is_biconnected(G))
True
>>> len(list(nx.articulation_points(G)))
0
See Also
--------
is_biconnected
biconnected_components
biconnected_component_edges
Notes
-----
The algorithm to find articulation points and biconnected
components is implemented using a non-recursive depth-first-search
(DFS) that keeps track of the highest level that back edges reach
in the DFS tree. A node `n` is an articulation point if, and only
if, there exists a subtree rooted at `n` such that there is no
back edge from any successor of `n` that links to a predecessor of
`n` in the DFS tree. By keeping track of all the edges traversed
by the DFS we can obtain the biconnected components because all
edges of a bicomponent will be traversed consecutively between
articulation points.
References
----------
.. [1] Hopcroft, J.; Tarjan, R. (1973).
"Efficient algorithms for graph manipulation".
Communications of the ACM 16: 372–378. doi:10.1145/362248.362272
"""
seen = set()
for articulation in _biconnected_dfs(G, components=False):
if articulation not in seen:
seen.add(articulation)
yield articulation
@not_implemented_for('directed')
def _biconnected_dfs(G, components=True):
# depth-first search algorithm to generate articulation points
# and biconnected components
visited = set()
for start in G:
if start in visited:
continue
discovery = {start: 0} # time of first discovery of node during search
low = {start: 0}
root_children = 0
visited.add(start)
edge_stack = []
stack = [(start, start, iter(G[start]))]
while stack:
grandparent, parent, children = stack[-1]
try:
child = next(children)
if grandparent == child:
continue
if child in visited:
if discovery[child] <= discovery[parent]: # back edge
low[parent] = min(low[parent], discovery[child])
if components:
edge_stack.append((parent, child))
else:
low[child] = discovery[child] = len(discovery)
visited.add(child)
stack.append((parent, child, iter(G[child])))
if components:
edge_stack.append((parent, child))
except StopIteration:
stack.pop()
if len(stack) > 1:
if low[parent] >= discovery[grandparent]:
if components:
ind = edge_stack.index((grandparent, parent))
yield edge_stack[ind:]
edge_stack = edge_stack[:ind]
else:
yield grandparent
low[grandparent] = min(low[parent], low[grandparent])
elif stack: # length 1 so grandparent is root
root_children += 1
if components:
ind = edge_stack.index((grandparent, parent))
yield edge_stack[ind:]
if not components:
# root node is articulation point if it has more than 1 child
if root_children > 1:
yield start


The DIV element is a block element, and will always start on a new line. It streches out to left and right as far as it can to take up full width
DIV element is used as a container for other HTML elements, and it has no required attributes but styles, class and id.When its used together with CSS, DIV element can be used to style blocks of contents.
Nigeria is one of the countries in Africa Continent. The name nigeria was given to it by a british lady called Flora 1n 1945.Nigeria later got her independence on 1st October 1960.Nigeria has 36 statea and their capitals. The capital of Nigeria is Abuja.
An inline element does not start on a new line and it takes as much width as necessary. An inline element doesn't contain a block level element. The span element is an inline element used to mark up a part of a text.


Sharad Pawar to meet Sonia Gandi to discuss alliance with Shiv Sena
He also said the NCP wants the Congress to be part of the government
by IANSNationalist Congress Party (NCP) supremo Sharad Pawar will meet Congress interim President Sonia Gandhi on Monday evening to discuss a possible alliance with the Shiv Sena to form a government in Maharashtra.
Speaking to IANS in Parliament, Pawar said, "I will meet Sonia Gandhi at her residence today in the evening."
According to Congress leaders, the meeting will take place at Sonia Gandhi's residence and would focus on Maharashtra where President's rule was imposed last Tuesday.
Party sources said pre-poll alliance partners -- Congress and NCP -- have already worked out a common minimum programme (CMP) with the Shiv Sena for the government formation.
Sources indicated that during the meeting, the portfolios among the three parties and the formula for the government will be discussed.
Congress sources said that before saying yes to the alliance, the party wants the Shiv Sena to shed its hard Hindutva ideology and take a secular stand on several issues.
He also said the NCP wants the Congress to be part of the government.
Pre-poll allies BJP and Shiv Sena contested the October 21 Assembly polls together. The BJP bagged 105 out of 288 seats while Shiv Sena managed to win 56 seats. However, the alliance fell apart after Shiv Sena chief Uddhav Thackeray demanded rotational chief ministerial post, a demand denied by the BJP.
On the other hand, the Congress and the NCP won 44 and 54 seats, respectively in the state.
Sign up for all the latest news, top galleries and trending videos from Mid-day.com
Subscribe
Loading...


Check Out Mhango's Messi-Like Solo Effort For Malawi
by SL SocialA man growing in confidence with Orlando Pirates, Gabadinho Mhango recently scored a wonderful solo effort while on national team duty with Malawi. Did you see it?
Pirates' results may have been indifferent in recent times, but Bucs fans can take solace in the fact that Mhango is among the few players beginning to find their feet this season.
Download The Soccer Laduma Social Media App & Earn Airtime for Selfies!
In fact, the former Bidvest Wits man was one of the stars who shone in the most recent Soweto Derby, and even managed to get his name on the scoresheet in the process.
With some wind in his sails, Mhango's confidence at club level seemingly filtered through to his duty for Malawi recently as he managed to score a spectacular solo goal in his country's 1-0 win over South Sudan in a 2021 Africa Cup of Nations qualifier this week.
Check it out!
Do you think Mhango will shine for Pirates this season?


--- layout: default title: Get in touch class: contact ---
Please feel free to contact me with any questions or feedback you may have. You can tweet me @mstrutt_co_uk.
Found an issue with the site? Great! Please open an issue on GitHub and I'll do my best to fix it as soon as possible. If you're feeling really charitable, you could even put together a pull request (I do love how the open source community can help me correct my spelling) and I'll be indebted to you / owe you a pint.


• API changes
• Deprecation of Commitlint and Angular support
• Going forward, a.k.a. future plans
• Quality of life improvements
• Conventional Commits as a language
• Other improvements and fixes in 0.21.0
The entire plugin extensions' API has been rewritten taking into account long term maintenance cost, possible future changes, and interoperability between JVM languages. The API is now exposed as a set of well documented interfaces only.
Sadly, I came to the realization that I can't support the Core plugin and multiple extensions, as separate plugins, too. The added work is too much as of now, mostly because Conventional Commit hasn't reached a stable state yet, and I tend to break the API now and then (although I'll try not to anymore).
I've published another release of Commitlint Conventional Commit - 0.1.3
- which supports the new Core API.
That's going to be the last supported one.
Angular Conventional Commit development is already stalled since months and the last supported Platform version is 2020.3. Like Commitlint, there won't be new releases in the future.
But hey, deprecation doesn't mean these extensions are dead forever.
Development of Conventional Commit as an IDE plugin started in late 2019, as a simple tool to help
colleagues write better and standardized commit messages (the first version spawned a live template only!).
Since then, I've provided many new features each release, while also exploring the IntelliJ Platform codebase and ecosystem,
and having fun after all.
While the plugin was growing in features, and as I was seeing a big interest in the Conventional Commits standard,
I decided to publish the sources on GitHub, and offer it to everyone through the Marketplace.
Up until now I see about 50 thousands total unique downloads, so it seems it was a good idea, and I couldn't be happier.
The mindset I've applied while writing the plugin's code has always been the same: developers should focus only on code, everything else should be done through tooling to save time and mental workload. Even a minute every day is important, and we commit a lot of times during the day. (And in general I hate CLIs, but don't tell anyone).
What are the future plans?
A key aspect of this plugin is that it is open source, free of charge, and extensible. Going forward I'd like to keep
the Core plugin as it is, I'd like to keep improving it with users' feedback and suggestions.
However, I'd also like to offer another version, on top of the Core codebase, that includes additional and feature-rich
extensions (e.g. for GitHub, GitLab, Jira, Angular, Commitlint). And that would be a paid version.
Why? First of all, if this idea will move forward, I really don't plan in asking for more than an Italian coffee per month.
But the reasons are a couple: a revenue, even if small, is a motivation to keep coding and improving things.
Also, I'm starting another job in another city, so an additional income would be helpful in paying for accommodation.
I wanted to share plans so that the community could answer with useful feedback. To do that, simply use this feedback discussion on GitHub. I'm looking forward to reading your opinions or suggestions!
This release solves some long outstanding issues that interfered with productivity.
The logic behind recently used tokens has been completely rewritten. The old "Recently used" tokens' Provider
has been removed, and now tokens of any Provider can be categorized and weighed as recent.
Also, the token's text and description (the one you see in the documentation popup) remain intact.
A new option - Prioritize recently used tokens - has been added and is on by default.
When you need custom tokens, you're able to use a custom conventionalcommit.json
file in the project's
root folder, or to set a specific path to it. However, it is not immediately clear how that JSON file should be written.
To solve the issue, the plugin now provides an embedded JSON Schema that is automatically associated to the file,
or that you can easily find in the JSON Schema chooser popup under the Conventional Commit name.
Automatic insertion of a space after inputting a colon (:
) is nice, most of the time.
If a user is accustomed to writing a commit message without looking at the screen, it's important
to avoid unexpected behaviors, such as inserting a space.
The automatic insertion can be turned off via the new option Automatically insert a space after the colon.
It might not be perfect, so please report issues, if any.
Big news! Conventional Commits is officially a language in IDEA. I've implemented a lexer and a basic parser
which, as a starting point, provide syntax highlighting of tokens. Highlighting colors can obviously be customized
via Editor > Color Scheme > Conventional Commit.
The language injection in the commit panel can be toggled via the new option Highlight syntax.
Looking ahead, having a full-fledged language means many new features can be added. As an example, other languages can be injected when writing code snippets in the message body. It also becomes easier to provide inspections and other minor details that works with PSI/AST tree.


--- layout: post title: Google Enterprise Chief Dave Girouard Leaves For New Startup date: '2012-03-16T17:28:08-07:00' tags: tumblr_url: http://alexhwilliams.tumblr.com/post/19423236901/google-enterprise-chief-dave-girouard-leaves-for-new ---
http://bit.ly/xVXKpk


How I passed (ISC)2 CC
Hi, if you're new to infosec like me, find me on about page
Bug Trails 23 Write-up
This is my first CTF where I actually made it to the top. I had a chance to try my bug hunting skills that I’ve
been learning for a while now.
Not a walkthrough or writeup. Just my raw recon notes and vulnerabilities
Root domains
- nahamstore.thm
A quick guide for the people who know scripting in general but don’t know goLang.
A quick guide for the people who know basic python but don’t know how to implement it in infosec context.
- Target IP: <IP_ADDRESS>
- Tools used: nmap, smbclient, mssqclient.py, python3, ufw, nc, psexec.py


--- layout: post title: 'How Not to be a Platform: Twitter's Firehose Mistake' url: http://www.3scale.net/2015/04/losing-innovation-twitters-firehose-mistake/ source: http://www.3scale.net/2015/04/losing-innovation-twitters-firehose-mistake/ domain: www.3scale.net image: http://kinlane-productions.s3.amazonaws.com/screen-capture-api/www-3scale-net201504loosing-innovation-twitters-firehose-mistake.png ---
We’re huge fans of Twitter – both as users and observers of the impact the Twitter API.Since it was opened, Twitter’s API has shown how providing access can unleash huge waves of innovation – giving rise to clients, data businesses and much more.So it’s very sad to see the news today that the company will be cutting off their firehose partners.This will directly affect third party data re-sellers (DataSift already responded) and end customers.However, it is likely to affect not only them, but also be very negative to Twitter in the long run.


One of the most frequently asked questions by people interested in learning programming is what language should they start off with. The short answer is that the most important thing you can learn in Computer Science is logic statements and how programming languages work in general. That still leaves open the question of which language is better to start with first.
This is a short quiz to help you decide what type of language is a good jumping off point for you. Not just what type of language will benefit you most, but also what languages will likely make the most sense to your style of thinking.
One important thing to note is that even after you learn a language, there is a good chance that you will have reasons to learn several more languages. An employer might be starting a new project in another language or they might have a long running program that uses several languages at once.


Posted by: {{quote.personSubmitting}} Author: {{quote.author}}
Posted {{quote.postingDate|dateCount}} days ago.


But well I live in a country where malware analyst jobs are nonexistant. Essentially our country depends on other country for security. Antivirus? Protection tools? Forget it. They don't exist in my country. It sucks but I end up settling as a programmer, earn some big bucks and very unlikely, but I'll leave this country for good. The grass is greener on the other side they said.
So right now, my current dream is as follows:
Golden plan! Well I'm currently on step 1 so its still far...far away.
See you guys in another 15 years or so at a better place.


Boeing orders and deliveries continue to sag with Max grounding
Orders and deliveries of new Boeing planes remain depressed eight months into the grounding of the company’s 737 Max.
Boeing said on Tuesday that an aircraft-leasing company replaced an order for 15 Max jets with an order of five 787s, a larger plane used mostly on international routes.
Another customer dropped an order for three Max planes after ordering a larger Boeing 777 earlier this year.
Chicago-based Boeing said it took 10 new orders in October, down from 24 in the same month last year, which included 14 Max jets.
The company delivered 20 commercial planes last month, including 12 for the 787, which Boeing calls the Dreamliner. That is down from 57 a year earlier, a decline that hurts Boeing’s cash flow because customers pay much of the purchase price on delivery.
Boeing burned through $2.9bn in cash in the third quarter, compared with generating $4.1bn in free cash flow a year earlier, and it took on $5.5bn in new debt.
European rival Airbus said it took 415 orders in October, with 300 coming in one deal with IndiGo.
The Indian discount carrier ordered planes in the Airbus A320neo family, planes that compete with the Max.
Airbus said it delivered 77 airliners last month, including 56 in the neo category.
The Max has been grounded since March after two accidents killed 346 people.
On Monday, Boeing said it hopes to resume deliveries of the Max in December and win Federal Aviation Administration approval of changes to the plane and a pilot-training course in January, clearing the way for the plane to return to service in the United States.
Regulators in other countries are expected to take longer.


Bangalore Institute of Technology (BIT) was started in the year 1979 with the objective of providing quality education in the ﬁeld of Technology and thereby serving the society. It has reached enviable level of excellence in technical education. This was achieved due to the unconditional support of Rajya Vokkaligara Sangha, committed staff and students. The environment of BIT motivates the student to quench their thirst for knowledge. The college thrives to achieve the all-round development of the students. BIT has always been at the forefront of modern technology and has the distinction of being the ﬁrst College to introduce a full-ﬂedged degree in Computer Science and Engineering in Karnataka. The institute has visualized the areas of future growth and incorporated various courses over the years. At present BIT has 10 undergraduate, 10 post graduate and 13 research centers. BIT has an annual intake of 1300 students. There are a number of centers carrying out inter-disciplinary research and many collaborative programs exist between the college and other professional institutions, like IISc, NAL.
The Chemistry department has been recognized as one of the latest research centers in Karnataka. BIT also has the acclaim of being the Study center for IGNOU programmes. BIT is proud to say that it has 289 faculty members with excellent knowledge and teaching caliber. 83 faculty members have PhD degree and 71 are pursuing PhD. Sixty percent of faculty members have served BIT for more than twenty years. The Institution has 294 efficient and committed team of supporting staff.


Most people do know when their birthdays are, but some might not know what day of the week they were born. Luckily for us, there is a way to calculate the day of the week from a specific date.
The Akans name Generator takes a user's birthday and generates the day of the week they were born and then depending on their gender outputs their Akan Name. Akan names are derived from Ghanian culture. Frequently in Ghana, children are given their first name as a 'day name' which corresponds to the day in the week they were born.These names have further meanings concerning the soul and character of the person.Many of the slave rebellions leaders had these 'day names' including Kwame NKurumah, Kojo, Kofi Annan.


1 min read
My first semester as a college student has been busy in several different ways. Adjusting to lecture-style classes, having more difficult coursework, and living away from home have all been challenging in different ways.
On the surface, summer internships appear to be the great divide, especially amongst freshman, essentially dividing the "haves" and the "have nots".
In this article I hope to detail my own experience with navigating the recruiting process in order to demystify much of the myths and heresy you may read.
Firstly, I feel it necessary to say that UT does a good job of setting expectations, especially for freshmen when it comes to getting internships for the summer. The fact of the matter is that it's simply a large risk for a company to take a chance on a freshman given the vast array of skill levels (which tends to converge as the years go on). In addition, hiring freshman isn't conducive to these company's goals to create a 'pipeline', wherein they can extend job offers to students directly following their internships.
Below are some notes about my specific interactions with a handful of companies that either gave me offers, or at least an interview.


A better life? Hopes and hardship of Mexico migration
MEXICO CITY: Aurelien crossed seas and treacherous jungles for a better life - but the social cost has proved high. No family, no friends, not even a bed or day off for this refugee from Cameroon.
And his is a relative success story.
"My goal was to bring my family here, but...I couldn’t get enough money together,” Aurelien, who did not use his real name, told the Thomson Reuters Foundation from his new Mexican home.
"Living without them is like being in hell.”
With the number of refugees doubling over the past ten years, the United Nations is battling to help migrants like Aurelien eke out a basic living while confronting the challenges of settling into a new life far from home.
The 38-year-old, who moved to Mexico City in 2017, was earning $300 a month working in construction. When he realised this would never meet the cost of bringing over his family, he changed tack.
Last month, Aurelien joined the 4,000+ refugees and asylum seekers relocated this year by the United Nations’ refugee agency, UNHCR, to northern Mexico, where wages are higher.
"(Now) my dream is a life in Monterrey with my children,” he said, referring to the northern manufacturing city of 4 million that is now home.
The UNHCR program, begun in 2016, aims to mitigate one of the most persistent conundrums of Mexico’s refugee crisis: while most asylum seekers arrive in the country’s rural south, the greatest economic opportunities lie in the industrial north.
It is these kinds of challenges that will occupy the inaugural Global Refugee Forum, a two-day United Nations conference to be held in Geneva next month.
The forum will explore how to help host countries cope, as well as settle refugees, whose numbers have swelled to over 25 million in the past decade.
DOOR OF ENTRY
Mexico is a case in point.
Once a transit country to the United States, violence in Latin America and an increasingly strict U.S. immigration policy has turned Mexico into a refugee destination, too.
According to Mexico's refugee agency, COMAR, the number of asylum applicants has already doubled this year from 2018.
Of these, two-thirds applied for asylum in the southern border state of Chiapas, where some 75% of people live in poverty, according to the government. In the northern state of Nuevo Leon, where Aurelien is now, the figure is only 14.5%.
"There are regions of the country that have all the capacity to not just receive arriving migrants, but to receive them without any problem," said COMAR coordinator general Andres Alfonso Ramirez Silva.
"(But) the door of entry...is the poorest state."
A strong manufacturing sector saw Nuevo Leon’s economy grow 2.3% in the second quarter, while Chiapas is in recession.
"There are a lot of economic opportunities (in Nuevo Leon),” said Gabriela Zamora, an attorney at Casa Monarca, an NGO in Monterrey working with UNHCR to resettle refugees.
"The manufacturing industry, the construction industry, these are the industries that have the most growth and they’re the types of jobs that refugees are looking for.”
HOPE V HARDSHIP
According to UNHCR, if all asylum seekers in Mexico entered the formal workforce, it could generate some $6 million in extra economic output in six months.
The tax revenue could then support the country's inundated refugee agency, said Florian Hopfner, who works for the United Nations refugee agency in Mexico.
"Indirectly, the system of refugee protection in Mexico would be self-financing,” Hopfner said.
Hector Garcia manages a family-owned timber business called Triplay Azteca and said he recently tried to hire refugees.
"We were struggling to find workers. People would just come and go,” he said. "So we had the idea...why didn’t we hire foreigners, especially Central Americans?”
A practical solution to his problem, plus the pastor felt it was the right thing to do.
"It’s my moral responsibility, not just as a human being, but as a citizen, and in my case as a Christian,” he said.
So Asylum Access, an advocacy group, hooked up Garcia with two Honduran asylum seekers.
After a day's work, neither man returned.
"It was a bit disappointing,” Garcia conceded.
Asylum Access said the commute was too far for the Hondurans, a typical obstacle given the city sprawls and has limited transport.
It takes Cameroonian refugee Aurelien two hours to reach the slaughterhouse where he works; he often doesn’t get home until after midnight.
"It’s really tough," he said. "But I don’t have a choice.”
He's more relaxed in Monterrey than in the suffocating chaos of Mexico City, where his life, he said, felt stagnant. The wages are better too - he now earns about $500 per month.
But life remains a struggle. Aurelien works a seven-day week and lives in a bare apartment on the edge of town with only a stove and fridge for furniture.
As for bringing over his family?
"Hope has disappeared,” he said. "I’m waiting for a true miracle from God." (Reporting by Oscar Lopez; editing by Lyndsay Griffiths and Chris Michaud.
Read also
Read More
'A sly thief': Rising heat steals jobs and lives in eastern India
"This extreme heat we now see is no less than a sly thief," said Murali Sahoo, a building painter in eastern India, as he washed his buckets and brushes at the end of another sweltering work day.
Read More
Greek PM sets up migrant child protection scheme
Greek Prime Minister Kyriakos Mitsotakis on Sunday announced a new scheme to protect unaccompanied migrant minors reaching the country, two days after condemning other EU states for their lack of solidarity.
Read More
Six migrant bodies washed up on Libyan coast
The bodies of six migrants were washed up on the coast east of Libya's capital Tripoli on Friday, while about 100 survivors were brought back to shore, coastguards and U.N. officials said.
Read More
Modi pushes to grant citizenship to non-Muslim immigrants
Prime Minister Narendra Modi’s government is set to push ahead with a controversial bill to grant Indian citizenship to non-Muslim illegal migrants from neighboring countries, a move that is expected to lead to heated debates as parliament reconvenes on Monday.
Read More
Cartels prey upon migrants who wait to cross US border
The gangsters trawling Nuevo Laredo know just what they’re looking for: men and women missing their shoelaces.
Read More
Nigerian artist explores migration, free speech
Typically minimalist and abstract, the works of Nigerian contemporary artist Alimi Adewale loudly echo migration and freedom of speech — two pressing issues of global concern.