Frontend
The frontend was developed with React v16 and Redux with Typescript. Similar to the backend, it listens to the WebSocket server for live users to display on the map.
The project consists of only a single view (Home.tsx
) which serves as a mediator for its multiple child components (e.g. Timeline
, SideNav
, Socials
) by receiving and passing necessary data through props. Consequently, the Home
component is also responsible for managing certain state that lives outside of the Redux store using State Hooks. Most of the API calls, performed via Redux actions, are also centralized here.
Notable packages used in the frontend are:
- react as the frontend framework
- react-redux for Redux bindings in React
- @material-ui for React components with Material Design
- google-map-react as the Google Maps API wrapper
- Requires setting the Google Maps API key as an environment variable
- react-twitter-embed for embedding tweets from the MindFuel account
- recharts for charts
For development, it is recommended to use Node v14 and npm v6. For details on versioning of packages, view the package.json
file in the frontend project.
Project Structure
├── frontend_react
├── src
│ ├── api // API and Socket services for connecting to Go backend and WebSocket server
│ ├── components // Shared React components used on the page (TSX and CSS files)
│ ├── hooks // Shared custom React hooks
│ ├── res
│ │ └── assets // Image and vector assets
│ ├── state // Redux logic
│ │ ├── actions.ts
│ │ ├── hooks.ts
│ │ ├── reducer.ts
│ │ └── store.ts
│ ├── utils // Helpers and utils (e.g. type definitions) used by multiple components
│ └── views // Pages of the application
│ └── Home // The home page of the application
│ ├── Home.tsx
│ └── Home.module.css
├── src
├── .prettierrc.json // Settings for Prettier
├── .eslintrc.cjs // Rules for ESLint
└── App.tsx // Entry point to the application
Linting and Formatting
The frontend uses ESLint and Prettier to maintain consistent code style and formatting. Linting and formatting fixes are automatically run on staged frontend Typescript files through a pre-commit hook using husky. You can also manually run linting to find and fix errors using the following:
$ npm run lint
$ npm run lint-fix
Creating a Production Build
By default, Docker compose is configured to run the development server for the React application via npm start
. To instead create the build files to serve for production, run npm run build
. Reference the Create React App documentation for more information on creating a production build.
Redux Usage
The project uses Redux architecture primarily for managing the state of live and historical users in addition to more trivial matters like application loading and alert states. For an in-depth overview of Redux, review the documentation on the Redux website. Introducing Redux as it relates to this project, the initial application state seen below is defined and managed in the reducer (reducer.ts
). Actions (actions.ts
) update this state through various workflows of the application. Note that we use null
within the application state to indicate intentional absence of a value.
const initialUserCount: LiveCounts = {
sessions: 0,
countries: new Set(),
cities: new Set(),
};
const initialState: AppState = {
liveUsers: [],
historicalUsers: null,
historicalCounts: null,
liveCounts: initialUserCount,
newUser: null,
loading: false,
alert: null,
appUserLocation: null
heatmapEnabled: false,
isWebSocketConnected: false,
};
Backend & APIs
The backend for the project is written in Go and performs two functions:
- Serves REST APIs for retrieving user information and stats
- Acts as a listener to Wonderville's WebSocket and subsequently records new users and updates stats in the MongoDB database.
The socket listener is decoupled from the REST API service through a goroutine
, meaning any interruptions to the REST service will not affect the recording of new data from the socket server. The socket listener will also automatically retry connecting every 60 seconds to the WebSocket server upon disconnection. The application logs are outputted to the rest_golang/logs.txt
file.
Notable packages used in the backend are:
- chi for the REST API service
- recws for WebSocket connections
- mongo-go-driver for MongoDB connections
Project Structure
├── rest_golang
│ ├── db // (Package) Retrieving and updating data from MongoDB
│ ├── logger // (Package) Application logger
│ ├── model // (Package) Type definitions for API and internal use
│ ├── server // (Package) REST API service (handler and router)
│ ├── socket // (Package) WebSocket listener
│ ├── logs.txt // Application logs
│ └── main.go // Entry point to the application
APIs
v1/api/users
Methods: GET
Description: Gets historical users and the total counts of users, uniques cities and unique countries relative to the given start date.
Parameters:
| Parameter | Required? | Type | Description | Example |
|---|---|---|---|---|
startDate | Y | String | The start of the date range in ISO string format. | 2022-10-04T14:48:00.000Z |
maxUsers | Y | Integer | The maximum number of users to return. | 100 |
mapBounds | Y | Object | The latitude and longitude boundaries used to search for users. Latitude and longitude values are integers. | { |
filter | N | Object | The activity filter value. Valid filter categories are Category or ActivityType. If Category is chosen, you can specify Game, Video, Activity or Story as the filter type. | { |
Responses
Success: 200 OK
Content:
{
"users": [
{
"type": "wondervilleAsset",
"payload": {
"ip": "<IP_ADDRESS>",
"url": "tree-cookies",
"location": {
"country_name": "Canada",
"region_name": "Alberta",
"city": "Leduc",
"longitude": -113.5587,
"latitude": 53.2659
},
"asset": {
"name": "Tree Cookies",
"url": "tree-cookies",
"id": 32,
"uuid": "",
"type": "Game",
"imageUrl": "https://wonderville.org/wvAssets/Uploads/Tree-Cookies-Thumb.png",
"active": true
},
"rank": 1
},
"date": "2022-12-04T18:03:43.181Z"
}
],
"counts": {
"sessions": 1,
"cities": 1,
"countries": 1
}
}
v1/api/activity-stats
Methods: GET
Description: Gets activity hit counts in descending order by the number of hits for the given date range.
Parameters:
| Parameter | Required? | Type | Description | Example |
|---|---|---|---|---|
startDate | N | String | The start of the date range in ISO string format. If this is not included, all-time hit counts will be returned. | 2022-10-04T14:48:00.000Z |
endDate | N | String | The end of the date range in ISO string format. Required if startDate is provided. | 2022-11-05T14:48:00.000Z |
top | N | Integer | The top number activities to return. | 10 |
Responses
Success: 200 OK
Content:
{
"stats": [
{
"hits": 81,
"name": "Save The World",
"type": "Game",
"url": "",
"imageUrl": "https://wonderville.org/wvAssets/Uploads/Save-the-World-Thumb.png",
"rank": 1
},
{
"hits": 24,
"name": "Tree Cookies",
"type": "Game",
"url": "",
"imageUrl": "https://wonderville.org/wvAssets/Uploads/Tree-Cookies-Thumb.png",
"rank": 2
}
]
}
v1/api/activity-filter-options
Methods: GET
Description: Gets a unique list of all activity categories and activity names recorded over time.
Parameters: None
Responses
Success: 200 OK
Content:
{
"options": [
{
"name": "Game",
"type": "Category"
},
{
"name": "Video",
"type": "Category"
},
{
"name": "Airborne Experiment",
"type": "Game"
},
{
"name": "Waste No More",
"type": "Video"
}
]
}
Database
MongoDB is used as the document database for the project. The wondervilleActivityBoard
database holds two collections, users
and activityStats
.
MongoDB & Docker
The MongoDB server for the project is containerized with Docker and listens on port 27017
. The wondervilleActivityBoard
database and root user credentials are defined in docker-compose.yml
. Docker volumes are used for persisting data from the database and linking the start-up script (mongo-init.js
) to the container. The start-up script creates the necessary collections and indexes.
Collections
users
The users
collection is used to store messages (i.e. the users) as they are delivered from the Wonderville WebSocket. These messages can be of Wonderville Asset or Wonderville Session type. Wonderville Assets contain an asset
key in the payload
with details about the game, activity, story or video that the user accessed, whereas Wonderville Sessions only detail the location of the user. Examples of the stored documents for both message types are shown below.
Wonderville Asset:
{
"type":"wondervilleAsset"
"date":{
"$date":"2022-12-04T18:03:43.181Z" // The date this entry was recorded
}
"payload":{
"ip": "<IP_ADDRESS>",
"url": "tree-cookies",
"location": {
"country_name": "Canada",
"region_name": "Alberta",
"city": "Leduc",
"longitude": -113.5586,
"latitude": 53.2658
},
"asset": {
"name": "Tree Cookies",
"url": "tree-cookies",
"id": 32,
"uuid": "",
"type": "Game",
"imageUrl": "https://wonderville.org/wvAssets/Uploads/Tree-Cookies-Thumb.png",
"active": true
},
"rank":1 // The rank as received by the Wonderville Websocket
}
}
Wonderville Session:
{
"type": "wondervilleSession",
"date": {
"$date": "2022-02-04T09:15:54.386Z"
},
"payload":{
"location":{
"country_name": "United States",
"region_name": "Michigan",
"city": "Monroe",
"longitude": -83.476,
"latitude": 41.9053
}
}
}
activityStats
The activityStats
collections stores information of the all-time hit counts for each game, activity, story or video. Any time a new message is received from the WebSocket, a record is either created or updated. Note that Wonderville Session stats are not included in this collection since they do not have a corresponding asset.
{
"name": "Solar Energy Defenders",
"url": "solarenergydefenders",
"type": "Game",
"imageUrl": "https://wonderville.org/wvAssets/Uploads/Solar-Energy-Defenders-Thumb.png",
"hits": 24749
}
Development
This section is geared towards developers who want to contribute or deploy this project.
Docker
The project's three services are containerized with Docker compose. The configuration for the services is specified in docker-compose.yml
which uses environment variables from the .env
file to set certain parameters. To spin up all three services, run the following command from the root of the project:
$ docker compose --env-file .env up -d
Note: M1 mac users may need to update the docker-compose.yml
file to include platform information before the containers can start successfully, for example:
image: arm64v8/mongo:latest
platform: linux/arm64/v8
Environment Variables
It is necessary to set multiple environment variables so that the services can start successfully. This also includes creating and setting the Google Maps Javascript API key which is used by the frontend. An overview of the necessary environment variables is provided below. For convenience during development, these were set in a single .env
file in the root of the project, but they can alternatively be split up between each service.
// React
CHOKIDAR_USEPOLLING=true
REACT_APP_GOOGLE_MAPS_API_KEY // The Google Maps Javascript API key
REACT_APP_MINDFUEL_WEBSOCKET // The WebSocket server address (can either production or mock development server)
REACT_APP_GOLANG_API // The backend API path
// Go
GO_MINDFUEL_WEBSOCKET // The WebSocket server address (can either production or mock development server)
GO_ALLOWED_ORIGINS // The origins which requests are allowed from as a comma separated list, if not set will allow all HTTP and HTTPS requests
// Mongo (used by Docker and Go)
MONGODB_DB_NAME // The MongoDB database name
MONGODB_USERNAME // The username for the Mongo DB root user
MONGODB_PWD // The password for the Mongo DB root user
MONGODB_URI // The Mongo DB connection string (requires the root user credentials)
Updating this documentation
This documentation was built with mdbook. After updating any of the files in the mdbook
directory, run mdbook build
to create a new documentation build which will be named book
. This builds needs to be moved to the top-level of the repository and renamed to docs
where it will then be used by either GitHub Actions or GitLab CI/CD to deploy the documentation.
Mock Services
Two services were created to assist with the development process by providing a source of mock data and a development WebSocket server.
mock_data
The mock_data
service seeds your MongoDB instance with a sample set of Wonderville asset data (found in the raw_data
directory) and randomized stats using the faker
and mongo-seeding
packages. This is achieved by using JS scripts nested in the data
directory with the same name as the collection to populate (e.g. data/users/users.js
). Be warned that running the seeder will drop your existing database.
To run the service, ensure the MONGODB_USERNAME
, MONGODB_PWD
and MONGODB_DB_NAME
environment variables are exported and then in the mock_data
directory run:
$ npm install
$ node index.js
Your database collections should then automatically be populated with a 4 month range of sample data including 1 month in the future to avoid having to reseed as frequently. The seeding scripts also provide the option of saving the sample data to a file; to do so uncomment the corresponding block of code at the end of the scripts in the data
directory.
mock_server
The mock_server
service provides a simple insecure WebSocket server which can be used in place of the production Wonderville server during development. Once connected, it will emit a user from the sample_data.json
file every 3 seconds. To use the service, set the WebSocket related environment variables in .env
(i.e. REACT_APP_MINDFUEL_WEBSOCKET
and/or GO_MINDFUEL_WEBSOCKET
) to ws://localhost:3210
and restart the Docker containers.
To start the server, in the mock_server
directory run:
$ npm install
$ node index.js
The server will start on port 3210.


Hulu announces $10 price increase for 'Live TV' plans
by KNOE(Gray News) - Hulu sent emails to customers Friday stating its Hulu + Live TV plans would cost $10 more beginning in December.
The price for Hulu + Live with ads will move from $44.99 per month to $54.99 per month, the company stated - a 22% increase.
For Hulu (No Ads) + Live TV, the cost goes from $50.99 per month to $60.99.
It said customers would see the change in the first billing cycle after Dec. 18. It's the second price increase in a year for the Disney-owned service, after a $5 bump in January.
"The price change allows us to continue delivering the best live and on-demand TV experience for you," Hulu stated.
The new price will be higher than its nontraditional live TV competitors like YouTube TV ($49.99/month) and Sling ($40/month).
Hulu states its subscription also includes "the largest streaming library with more than 85,000 episodes of TV, movies and award-winning Hulu Originals."
Copyright 2019 Gray Media Group, Inc. All rights reserved.


Class: Ruff::Throws::Resend
- Inherits:
-
Object
- Object
- Ruff::Throws::Resend
- Defined in:
- lib/ruff/objects.rb
Overview
Resend
is internal object like Eff
.
It is used when an effect is unable to be handled and should be thrown to the outer handler.
Instance Attribute Summary collapse
-
#eff ⇒ Object
readonly
is abstracted effect (such as
Eff
or (re)thrownResend
). -
#k ⇒ Object
readonly
is a continuation of
eff
thrown context.
Instance Method Summary collapse
-
#initialize(eff, k) ⇒ Resend
constructor
creates a new object with
eff
andk
.
Constructor Details
#initialize(eff, k) ⇒ Resend
creates a new object with eff
and k
.
33 34 35 36 |
# File 'lib/ruff/objects.rb', line 33 def initialize(eff, k) @eff = eff @k = k end |
Instance Attribute Details
#eff ⇒ Object (readonly)
is abstracted effect (such as Eff
or (re)thrown Resend
).
27 28 29 |
# File 'lib/ruff/objects.rb', line 27 def eff @eff end |
#k ⇒ Object (readonly)
is a continuation of eff
thrown context.
30 31 32 |
# File 'lib/ruff/objects.rb', line 30 def k @k end |


Abstract tracer that caches recorded traces in memory and periodically dumps them. Child classes implement saving cached traces to their specified destinations.
More...
|
| void | Configure (ConfigParams config) |
| | Configures component by passing configuration parameters. More...
|
| |
| void | SetReferences (IReferences references) |
| | Sets references to dependent components. More...
|
| |
| void | Trace (string correlationId, string component, string operation, long duration) |
| | Records an operation trace with its name and duration More...
|
| |
| void | Failure (string correlationId, string component, string operation, Exception error, long duration) |
| | Records an operation failure with its name, duration and error More...
|
| |
| TraceTiming | BeginTrace (string correlationId, string component, string operation) |
| | Begings recording an operation trace More...
|
| |
| void | Clear () |
| | Clears (removes) all cached log messages. More...
|
| |
| void | Dump () |
| | Dumps (writes) the currently cached log messages. More...
|
| |
|
| void | Write (string correlationId, string component, string operation, Exception error, long duration) |
| | Writes a log message to the logger destination. More...
|
| |
| abstract void | Save (IList< OperationTrace > messages) |
| | Saves log messages from the cache. More...
|
| |
| void | Update () |
| | Makes trace cache as updated and dumps it when timeout expires. More...
|
| |
|
|
string | _source = null |
| |
|
IList< OperationTrace > | _cache = new List<OperationTrace>() |
| |
|
bool | _updated = false |
| |
|
long | _lastDumpTime = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds() |
| |
|
int | _maxCacheSize = 100 |
| |
|
long | _interval = 10000 |
| |
Abstract tracer that caches recorded traces in memory and periodically dumps them. Child classes implement saving cached traces to their specified destinations.
- source: source (context) name
- options:
- interval: interval in milliseconds to save log messages(default: 10 seconds)
- max_cache_size: maximum number of messages stored in this cache (default: 100)
- *:context-info:*:*:1.0 (optional) ContextInfo to detect the context id and specify counters source
See ITracer, OperationTrace
◆ BeginTrace()
| TraceTiming PipServices3.Components.Trace.CachedTracer.BeginTrace |
( |
string |
correlationId, |
|
|
string |
component, |
|
|
string |
operation |
|
) |
| |
Begings recording an operation trace
- Parameters
-
| correlationId | (optional) transaction id to trace execution through call chain. |
| component | a name of called component |
| operation | a name of the executed operation. |
- Returns
Implements PipServices3.Components.Trace.ITracer.
◆ Clear()
| void PipServices3.Components.Trace.CachedTracer.Clear |
( |
| ) |
|
Clears (removes) all cached log messages.
◆ Configure()
| void PipServices3.Components.Trace.CachedTracer.Configure |
( |
ConfigParams |
config | ) |
|
Configures component by passing configuration parameters.
- Parameters
-
| config | configuration parameters to be set. |
◆ Dump()
| void PipServices3.Components.Trace.CachedTracer.Dump |
( |
| ) |
|
◆ Failure()
| void PipServices3.Components.Trace.CachedTracer.Failure |
( |
string |
correlationId, |
|
|
string |
component, |
|
|
string |
operation, |
|
|
Exception |
error, |
|
|
long |
duration |
|
) |
| |
Records an operation failure with its name, duration and error
- Parameters
-
| correlationId | (optional) transaction id to trace execution through call chain. |
| component | a name of called component |
| operation | a name of the executed operation. |
| error | an error object associated with this trace. |
| duration | execution duration in milliseconds. |
Implements PipServices3.Components.Trace.ITracer.
◆ Save()
| abstract void PipServices3.Components.Trace.CachedTracer.Save |
( |
IList< OperationTrace > |
messages | ) |
|
|
protectedpure virtual |
Saves log messages from the cache.
- Parameters
-
| messages | a list with log messages |
◆ SetReferences()
| void PipServices3.Components.Trace.CachedTracer.SetReferences |
( |
IReferences |
references | ) |
|
Sets references to dependent components.
- Parameters
-
| references | references to locate the component dependencies. |
◆ Trace()
| void PipServices3.Components.Trace.CachedTracer.Trace |
( |
string |
correlationId, |
|
|
string |
component, |
|
|
string |
operation, |
|
|
long |
duration |
|
) |
| |
Records an operation trace with its name and duration
- Parameters
-
| correlationId | (optional) transaction id to trace execution through call chain. |
| component | a name of called component |
| operation | a name of the executed operation. |
| duration | execution duration in milliseconds. |
Implements PipServices3.Components.Trace.ITracer.
◆ Update()
| void PipServices3.Components.Trace.CachedTracer.Update |
( |
| ) |
|
|
protected |
Makes trace cache as updated and dumps it when timeout expires.
See Dump
◆ Write()
| void PipServices3.Components.Trace.CachedTracer.Write |
( |
string |
correlationId, |
|
|
string |
component, |
|
|
string |
operation, |
|
|
Exception |
error, |
|
|
long |
duration |
|
) |
| |
|
protected |
Writes a log message to the logger destination.
- Parameters
-
| correlationId | (optional) transaction id to trace execution through call chain. |
| component | a name of called component |
| operation | a name of the executed operation. |
| error | an error object associated with this trace. |
| duration | execution duration in milliseconds. |
The documentation for this class was generated from the following file:
- src/Trace/CachedTracer.cs


Off-Topic
Chill Moderators
(4)
Thanks
(3)
RIP the server
(3)
Rip Heccus
(8)
Hexuss
(2)
Hexus discord
(4)
I need help
(2)
Sadness
(3)
!read!
(2)
Read pls
(10)
Minhook.x86 help
(1)


I wants to be a Full Stack Developer
University of Mumbai
Year of Passing:-2017
CGPI:-6.82/10
Maharashtra State Board of Secondary and
Higher Secondary Education
year of passing:-2013
Percentage:-66.67
Maharashtra State Board of Secondary and
Higher Secondary Education
year of passing:-2011
Percentage:-85.82
Hardware implementation of voice recognition system which will take voice input from the user,decode it and transmit to robotic gripper which will grab the object at position mentioned in decoded voice signal.
By changing the duty cycle and frequency of PWM wave a DC Motor is controlled by adopting SG3524 as PWM generator and driver circuit to driver the motor.
Traffic light conroller is used control traffic by adopting microcontroller as the main controlling element,and as a indication of light
Kandivali (east),Mumbai-400101
<EMAIL_ADDRESS>8268169072
Copyright ©Designed by priya


Franchise Sales Tracking
HOME
FRANCHISE
MENU
MERCH
LOCATIONS
CAREERS
FISHLORE
Add Your Franchise Information to the Table Below
Store Location:
Average Cookies Sold Per Customer:
Minium Hourly Customer Traffic:
Maximum Hourly Customer Traffic:
Submit


The front end basic code has been completed and a researcher has created a needfinding report. You will review the needfinding report and implement the front end code for the requested fixes and feature there. Most importantly, the 'search results' page. You do not need to integrate into the back end.
Fork the repo https://github.com/ato1120/Q-A-App-Stanford to write your code. Make sure that what you create is in line with the style of the of the web page, and make sure to submit a pull request when you are done.
Input(s): For this task, you will receive the following input(s): needfinding report, code files.
Deliverable(s): updated code files
Deadline: You will have 3 hours to finish this task
If you are available and ready to start working on this task, click on the following button. On clicking this, you will be redirected to a page with a short form. This form confirms you have read the info on this page and will notify our hiring manager to send you the hiring queue link. You will have to confirm your email address, following which you will be granted access to the Implement Front-end of Needfinding Changes task on Foundry. You will then be sent an offer on Elance.


Invalid username / password combination.
Your username was sent to the email address on file.
Your password has been reset. Please login with your new password.


title: Jobs description: Crate.IO is hiring! We work for two things: technology excellence and being a great place to work. {% extends "base.html" %} {% block header %}
We work for two things: technology excellence and being a great place to work.
Joining Crate.IO lets you be part of an open open source company that’s set to change how developers use data stores. We’re hiring in Dornbirn in Austria and Berlin in Germany. We are looking for exceptional individuals with the drive to join us for the challenges and the rewards of developing something new and growing quickly.
| Team or role: | Software Engineering |
| Job type: | Full-time |
| Last updated: | August 25th, 2015 |
| Job location(s): | Berlin in Germany |
| Team or role: | Business Management |
| Job type: | Full-time |
| Last updated: | July 13th, 2015 |
| Job location(s): | Dornbirn in Austria |
| Team or role: | Developer Advocate |
| Job type: | Full-time |
| Last updated: | August 25th, 2015 |
| Job location(s): | Berlin in Germany |
Please send your resume and application to<EMAIL_ADDRESS>and we’ll be in touch with you!
Links to other web sites and resources where we might learn more about you (personal blog, Twitter, GitHub, Stackoverflow, etc.) are greatly appreciated.


Standard output
07:16:23.451 [Test worker] INFO o.m.release.comparison.ZipCompare - Comparing /tmp/junit6249098483127700062/junit8324258507433758378/zip-1.zip with /tmp/junit6249098483127700062/junit8324258507433758378/zip-2.zip
07:16:23.453 [Test worker] INFO o.m.release.comparison.ZipCompare - 4 entries matched
07:16:23.454 [Test worker] INFO o.m.release.comparison.ZipCompare - Comparing /tmp/junit6249098483127700062/junit8324258507433758378/zip-2.zip with /tmp/junit6249098483127700062/junit8324258507433758378/zip-1.zip
07:16:23.461 [Test worker] INFO o.m.release.comparison.ZipCompare - 4 entries matched
07:16:23.463 [Test worker] INFO o.m.release.comparison.ZipCompare - Comparing /tmp/junit6249098483127700062/junit8324258507433758378/zip-6.zip with /tmp/junit6249098483127700062/junit8324258507433758378/zip-7.zip
07:16:23.464 [Test worker] INFO o.m.release.comparison.ZipCompare - 0 entries matched
07:16:23.466 [Test worker] INFO o.m.release.comparison.ZipCompare - Comparing /tmp/junit6249098483127700062/junit8324258507433758378/zip-7.zip with /tmp/junit6249098483127700062/junit8324258507433758378/zip-6.zip
07:16:23.469 [Test worker] INFO o.m.release.comparison.ZipCompare - 0 entries matched
07:16:23.470 [Test worker] INFO o.m.release.comparison.ZipCompare - Comparing /tmp/junit6249098483127700062/junit8324258507433758378/zip-1.zip with /tmp/junit6249098483127700062/junit8324258507433758378/zip-3.zip
07:16:23.473 [Test worker] INFO o.m.release.comparison.ZipCompare - x/y/4.txt does not match
07:16:23.475 [Test worker] INFO o.m.release.comparison.ZipCompare - 3 entries matched
07:16:23.476 [Test worker] INFO o.m.release.comparison.ZipCompare - 1 entries did not match
07:16:23.477 [Test worker] INFO o.m.release.comparison.ZipCompare - Comparing /tmp/junit6249098483127700062/junit8324258507433758378/zip-1.zip with /tmp/junit6249098483127700062/junit8324258507433758378/zip-4.zip
07:16:23.478 [Test worker] INFO o.m.release.comparison.ZipCompare - x/y/4.txt not found in /tmp/junit6249098483127700062/junit8324258507433758378/zip-4.zip
07:16:23.480 [Test worker] INFO o.m.release.comparison.ZipCompare - 3 entries matched
07:16:23.480 [Test worker] INFO o.m.release.comparison.ZipCompare - 1 entries did not match
07:16:23.483 [Test worker] INFO o.m.release.comparison.ZipCompare - Comparing /tmp/junit6249098483127700062/junit8324258507433758378/zip-1.zip with /tmp/junit6249098483127700062/junit8324258507433758378/zip-5.zip
07:16:23.484 [Test worker] INFO o.m.release.comparison.ZipCompare - x.txt not found in /tmp/junit6249098483127700062/junit8324258507433758378/zip-1.zip
07:16:23.485 [Test worker] INFO o.m.release.comparison.ZipCompare - 4 entries matched
07:16:23.487 [Test worker] INFO o.m.release.comparison.ZipCompare - 1 entries did not match
07:16:23.488 [Test worker] INFO o.m.release.comparison.ZipCompare - Comparing /tmp/junit6249098483127700062/junit8324258507433758378/zip-1.zip with /tmp/junit6249098483127700062/junit8324258507433758378/zip-6.zip
07:16:23.489 [Test worker] INFO o.m.release.comparison.ZipCompare - 1.txt not found in /tmp/junit6249098483127700062/junit8324258507433758378/zip-6.zip
07:16:23.491 [Test worker] INFO o.m.release.comparison.ZipCompare - x/2.txt not found in /tmp/junit6249098483127700062/junit8324258507433758378/zip-6.zip
07:16:23.492 [Test worker] INFO o.m.release.comparison.ZipCompare - x/y/3.txt not found in /tmp/junit6249098483127700062/junit8324258507433758378/zip-6.zip
07:16:23.499 [Test worker] INFO o.m.release.comparison.ZipCompare - x/y/4.txt not found in /tmp/junit6249098483127700062/junit8324258507433758378/zip-6.zip
07:16:23.499 [Test worker] INFO o.m.release.comparison.ZipCompare - 0 entries matched
07:16:23.500 [Test worker] INFO o.m.release.comparison.ZipCompare - 4 entries did not match


This page allows you to add items to the Tools menu that when selected cause an external program to be executed. You can add up to nine tools to the list. Typing an ampersand (&) in the tool’s name makes the following letter a menu accelerator key.
By default this menu includes two entries that run the Windows Calculator (calc.exe) and NotePad (notepad.exe).
Menu Contents
Show the currently defined tools. Use the four buttons above this list to add new entries, delete entries or move entries up and down in the list. The fields below apply to the currently selected entry in this list.
Command
This is the full path name of the executable .to run when the Tools menu item is selected. Click the button to the right to browse and select the executable file to be run.
Arguments
These are the command line arguments to pass to the program. Use the argument “$(FilePath)” (without the quotes) to get the name of the file in the window that is active when the menu item is selected.
Initial directory
This is the directory in which the program is run.


$ unset http_proxy; curl -XPUT "http://<IP_ADDRESS>:8080/laaslogid/logid?lid=RANDOMDATA&rule1=host=www.monsite.fr&rule2=uri^=monAppli" [{"lid":"RANDOMDATA","rule1":["http://www.monsite.fr"],"status":"OK","comment":"CREATED"}]
$ unset http_proxy; curl -XGET "http://<IP_ADDRESS>:8080/laaslogid/logid?lid=RANDOMDATA" [{"lid":"RANDOMDATA","url":["http://www.monsite.fr"]}]
$ unset http_proxy; curl "http://<IP_ADDRESS>:8080/laaslogid/logid?action=count" {"count":1}
$ unset http_proxy; curl "http://<IP_ADDRESS>:8080/laaslogid/logid?action=getall" [{"lid":"RANDOMDATA","url":["http://www.monsite.fr"]}]
cat /usr/share/tomcat/LaaS.apikeys.properties
ABCDEFGHIJK010203=Mon API de TEST MLDMDLMSDL?QLKS?KQ?SK=api test 2
Just edit the file to add a new api key, it will be usable from now.
The API will detect the file update and reload them.
Think to synchronize the file with the other nodes.
LaaSIds are create and maintain by WAP/Automation.
They are stored as JSON file: /usr/share/tomcat/laas-logids.json
cat /usr/share/tomcat/laas-logid.json [{"lid":"88","vid":["v88","v89"],"uid":["u88"]},{"lid":"89","vid":["89"],"sid":["89"]},{"lid":"90","vid":["90"],"sid":["90"]},{"lid":"91","vid":["91"],"sid":["91"]},{"lid":"92","vid":["92"],"sid":["92"]},{"lid":"93","vid":["93"],"sid":["93"]},{"lid":"94","vid":["94"],"sid":["94"]},{"lid":"95","vid":["95"],"sid":["95"]},{"lid":"96","vid":["96"],"sid":["96"]},{"lid":"97","v
cat /usr/share/tomcat/LaaS.properties
no-authentication-for=^(10\\.225\\.138\\.[0-9]+)$ forward-updates-to=http://<IP_ADDRESS>/LaaS-API/logid
$ unset http_proxy; curl -D - -L --user "ABCDEFGHIJK010203:Mon API de TEST" "http://<IP_ADDRESS>:8080/laaslogid/login" HTTP/1.1 200 OK Server: Apache-Coyote/1.1 Set-Cookie: JSESSIONID=F870D000C9943B34237470519B9918E7; Path=/laaslogid/; HttpOnly Content-Type: text/html;charset=UTF-8 Content-Length: 167 Date: Wed, 16 Sep 2015 14:40:05 GMT You are logged with APIkey 'ABCDEFGHIJK010203'
$ unset http_proxy; curl -D - --cookie "JSESSIONID=F265A5ADD3E719741E3E73514A9595CA" "http://<IP_ADDRESS>:8080/laaslogid/logid?action=count" HTTP/1.1 200 OK Server: Apache-Coyote/1.1 Content-Type: application/json;charset=UTF-8 Content-Length: 13 Date: Wed, 16 Sep 2015 14:46:28 GMT {"count":100}
$ unset http_proxy; curl -D - --cookie "JSESSIONID=F265A5ADD3E719741E3E73514A9595CA" "http://<IP_ADDRESS>:8080/laaslogid/login?logout" HTTP/1.1 401 Non-Autorisé Server: Apache-Coyote/1.1 WWW-Authenticate: Basic "CloudOps-LaaS- API key" Content-Type: text/html;charset=utf-8 Content-Language: fr Content-Length: 1369 Date: Wed, 16 Sep 2015 14:47:13 GMT


Ryu Hoshi (リュウ Ryū)
Metsu! Hadoken!
Résumé
— I do not compete with others, the only competition that challenges me is myself. As a fighter, friend and an employee I am known as contemplative, tortured and driven.
EXPERIENCE
-
2018-Recent
Amongst many fighters of the past was featured in the movie "Ready Player One". Ryu ready always!
-
2017
United with unknown until then to me Power Rangers to defea resurrected M.Bison.Damn good fighters they are, even not knowing karate ways!
-
2016
In "Street Fighter V" once and for all erased M.Bison from earth and tamed my inner Evil Ryu. Also spent some time on a side-project, mini-series "Street Fighter: Resurrection".
-
2014
Filmed in a martial arts tutorial "Street Fighter: Assassin's Fist", revealing to audience forgotten art of Ansatsuken.
-
2012
The gods of intenet concluded me in the animated movie "Wreck-It Ralph", but rewarded me with a good drink for it!
-
2008
My evil alter ego sneaked out of control and became a boss in "Street Fighter IV".
-
2006
Borrowed my famous ripped gi to Soki in "Onimusha: Dawn of Dreams", gods informed me he needed that for the battle.
-
1998
Defeated M. Bison in "Street Fighter Alpha 2", bastard wanted to use my heroic body for his evil intentions, but retreated with shame. Also this year I encountered Marvel universe in "Marvel vs. Capcom: Clash of Super Heroes" fighter,loyal to my employer, Capcom, of course.
-
1997
Reunited with Ken, my friend and opponent in "Street Fighter III". Men's friendship works mysteriously. Also helped with Arika project "Street Fighter EX"
-
1996
Took care of villainous Akuma in "Street Fighter Alpha 2". As a freelance on "Super Puzzle Fighter II Turbo" tried myself in a new genre, puzzle games. Let the wrath of seven heavens come upon these malicious enigmas, never again!
-
1995
Kept fighting in "Street Fighter Alpha: Warriors' Dreams".
-
1994
Screened in a movie "Street Fighter", so that the batllesof past would not be forgotten by millenial generation.
-
1991
Was promoted to "Street Fighter II". Didn't stay there for long, celebrations and office dwelling is not for me!
-
1987
Started working for Capcom project "Street Fighter". My partner was Ken Masters, the boss'name was Sagat.
PUBLICATIONS
-
2011-Recent
The true and humble story of me under pseudonim Tyler Wilde in an article "The evolution of Ken and Ryu"
-
2003-2018
For 15 years I have published comic books with Udon Entertainment depicting my adventures, bitter lessons and great victories.
Languages
Skills
Character
Likes 😃
Dislikes 😞
Wants 🥺
LIFE & EDUCATION
To live is to fight and to fight is to live. I started learning fighting at my master Gouken's castle, I was beaten at head way too often to remember when exactly.
LIFE LESSON
You must defeat Sheng Long to stand a chance.


Why ChasM's?
Thanks to
ChasM's, millions of people managed to solve
various IT issues, and you can do the same right now. All you need to do
is to try out this incredible tool and results can indeed pay off. Give
it a try and see how easy it can be to identify and solve any problems.
You will always be able to resolve IT issues as long as you have the
tool to emulate internet applications, hardware functions, and other
features. ChasM's
is here to bring you all of that and so much more, all while being able
to deliver professional screenshots for all these issues. Check out this
extraordinary tool, and you will not be disappointed!
Notice
Closing
November 1
chasms.com will be
closing November 1, 2021. July of 2021 was 24 years for the site to
be online and I'm retiring. It's
time for me to say goodbye. The website is up for sale. Please make me an offer and any reasonable
offer will be considered. The domain name and all files will be included with
the sale. I want to thank each and every one of you that have made
use of the site through the years.
Thank you.
Remove All 4s from the email address
Daily Horoscope |
On This Day |
Today's Birthdays
Today's Cartoon |
ZDNET News |
CNET News
TechCrunch News |
CNN News |
Science Daily
ChasM's Entertainment Page
ChasM's has
been supplying the technical community with the latest screenshots
(walkthroughs) of Internet applications since 1997. These include
Windows OS, Mac,
email, browsers, security, spam, routers, modems,
networking, games, etc.
Contact
Us - Remove all 4s |
Privacy Policy |
About
©Copyright 1997-2019
You may not copy, download or use any part of this site
for use
on another website or for commercial purposes, any such use
will be strictly enforced to the full extent of the law.
|
macOS Catalina! |
iPad Air iOS 11.2! |
Spring 2019 Edition! |
Outlook 2016! |
iOS 13! |
Xbox One S!
|
ChasM's is a tool that has been available for the past 20 years and which helped thousands upon thousands of IT professionals.
Its advantages come from the amazing ease of use, stellar attention to detail and incredible value.
Since ChasM's can simulate and help troubleshoot spam, security tools, routers, modems, networking, games, Mac OS,
Windows, email, and browsers, you can count on it to help you figure out any problems fast and easy.


[SYMBOL]
[A]
[B]
[C]
[D]
[E]
[F]
[G]
[H]
[I]
[J]
[K]
[L]
[M]
[N]
[O]
[P]
[Q]
[R]
[S]
[T]
[U]
[V]
[W]
[X]
[Y]
[Z]
-s option, command-line
samples, redirectors
SASL (Simple Authentication and Security Layer), authentication and
scaling, ICP
scheme argument, cache_dir directive
security log files
surrogate mode and
segmentation violations, debugging
server acceleration
[See also surrogate mode]2nd
content negotiation
overview
server-side of Squid
server_list, cache manager page
server_persistent_connections directive
servers FTP servers
Gopher
HTTP
multicast ICP
origin servers
sever acceleration, access controls
shells, file-descriptor limits
shutdown
shutdown, cache manager page
shutdown_lifetime directive
sibling caches
false hits
size argument cache_dir directive
sleep_after_fork directive
slow speed, debugging and
SMB (authentication helper) Basic authentication
NTLM authentication
SNMP monitoring and
snmpget and
snmpwalk and
SNMP MIB
snmp_access ACL
snmp_access directive
snmp_community ACL type
snmp_incoming_address directive
snmp_outgoing_address directive
snmp_port directive
snmpget
snmpwalk
soft updates, filesystem tuning and
Solaris file descriptors and
filesystem benchmarks
source code CVS and
patches, applying
precompiled binaries
2nd
shared libraries and
Squid ports
unpacking
speed, debugging and
Squeezer
Squid as daemon process
squid_start script
history of
squid -k shutdown command
Squid MIB
Squid ports
Squid RPMs
squid-announce mailing list
squid-cache Web site
squid-dev mailing list
Squid-RRD, cache manager and
squid-users mailing list
2nd
3rd
squid.conf access controls
cache_mgr directive
case sensitivity
directives
2nd
3rd
error checking
http_port directive
syntax
visible_hostname directive
squid.pid file, shutdown and
squid_start script, Squid as daemon process
squidaio_counts, cache manager page
squidclient utility, Cache Manager and
squidGuard redirector
SquidNT
Squirm redirector
src ACL type
src_as ACL type
srcdom_regex ACL type
srcdomain ACL type
SSL connections https_port directive
surrogate mode
ssl_unclean_shutdown directive
STABLE releases
stack traces debugging
status code field, store.log
stderr, terminal window and
storage aufs storage scheme
coss storage scheme
diskd storage scheme
filesystems
I/O bottleneck
null storage scheme
store.log
access.log comparison
file numbers, mapping to pathnames
store.log file
2nd
store_avg_object_size directive
store_check_cachable_stats, cache manager page
store_digest, cache manager page
store_dir_select_algorithm directive
store_io, cache manager page
store_objects_per_bucket directive
storedir, cache manager page
strip_query_terms directive
access.log and
subnets, delay pools and
surrogate mode access controls
configuration
content negotiation
directives
error messages and
hierarchies and
log files and
purge operations and
reloads and
uncachable content
swap directory error, debugging and
swap.state file
2nd
syntax access control rules
access controls
ACL elements
squid.conf
system calls, filesystems and
|


CrimPapers
Articles published on 7 March 2017
On 7 March 2017, 10 new articles were published in 7 journals.
Language Disorders in Victims of Domestic Violence in Children’s Homes
Prison Chaplains: Inmate/correctional Officer Role Perceptions and Conflict Management in Modern Corrections by Andrew S. Denney
Understanding the Perceived Value of Incentives in Community Supervision by Eric J. Wodahl, Brett E. Garland, Thomas J. Mowen
Reply to Bennett by Jeffrie G. Murphy
Alice Paul Awards For Women Who Have Worked to Confront Men's Violence Against Women
A Visit to the Doctor: Preparation For Activism
Moral Disengagement and Psychopathy: A Study on Offenders in Italian Jails by I. Petruccelli, C. Barbaranelli, V. Costantino, A. Gherardini, S. Grilli, G. Craparo, G. d'Urso
A Research Note on the Association Between Work–family Conflict and Job Stress Among Chinese Prison Staff by Jianhong Liu, Eric G. Lambert, Shanhe Jiang, Jinwu Zhang
Gathering Human Intelligence Via Repeated Interviewing: Further Empirical Tests of the Scharff Technique by Simon Oleszkiewicz, Pär Anders Granhag, Steven M. Kleinman
Better Together? A Review of Evidence For Multi-Disciplinary Teams Responding to Physical and Sexual Child Abuse
Note: although this article was published on 1 January 2017, the publisher only added it to the journal RSS feed on 7 March 2017, which is why it is shown in the list of articles for that date.


How to become a gazillionaire!
What am I?
What is motivation?
Initial "drive"
Multiple affecting factors
Why should I motivate myself?
Sheeple aren't motivated
Get ahead of the curve
How do I motivate myself?


Here, I will post puzzles with details as following.
Each Sunday, I will post a puzzle.
‹
›
Please wait!
Here I will put note to solve the problem and keep brushing the knowledge.


Samples from "EXPLOITING SYNTACTIC FEATURES IN A PARSED TREE TO IMPROVE END-TO-END TTS"
Authors: Haohan Guo, FK Soong, Lei He, Lei Xie
Abstract: The end-to-end (e2e) TTS, which can predict speech directly from a given sequence of graphemes or phonemes, has shown improved performance over the conventional TTS. However, its predicting capability is still limited by the acoustic/phonetic coverage of the training data, usually constrained by the training set size. To further improve the TTS quality in pronunciation, prosody and perceived naturalness, we propose to exploit the information embedded in a syntactically parsed tree where the inter-phrase/word information of a sentence is organized in a multilevel tree structure. Specifically, two key features: phrase structure and relations between adjacent words are investigated. Experimental results in subjective listening, measured on three test sets, show that the proposed approach is effective to enhance pronunciation clarity, prosody and naturalness of the synthesized speech of the baseline system.
Note: These samples are synthesized from Mel-spectrum by Griffin-Lim algorithm. We just need to pay attention to prosody because this work has no relation with sound quality basically.
Common test set (Left: baseline, Mid: phrase structure based features, Right: word relation based features)
“Although they expect higher data speeds eventually , IT managers don't know which technologies will deliver .”
“Mobile operators say that new network technologies will increase mobile bandwidth over two hundred times , pushing speeds from today's nine .”
“At a meeting of Microsofts top one hundred and fifty executives , Nadella tried to get everyone back on course .”
“Twitter , Amazon , Google , and others have all removed their Apple Watch apps .
”
“Brins resume , which was last updated more than twenty years ago , is still available online .”
Complex test set (Left: baseline, Mid: phrase structure based features, Right: word relation based features)
“Satya Nadella: I think it is important for companies like ours to have a set of principles that governs some of the most important things like privacy and security and or immigration and take a stance .
”
“In addition , Microsoft also launched a new set of tools for developers who want to use its Visual Studio Code IDE for building models with CNTK , TensorFlow , Theano , Keras and Caffe two .
”
“But it will be the driver's responsibility to make sure that children under 14 do not ride in the front unless they are wearing a seat belt of some kind.
”
“They are trying to find out whether there is something about the way we teach language to children which in fact prevents children from learning sooner.
”
“Even the folk knowledge in social systems on which ordinary life is based in earning, spending, organizing, marrying, taking part in political activities, fighting and so on, is not very dissimilar from the more sophisticated images of the social system derived from the social sciences, even though it is built upon the very imperfect samples of personal experience.
”
“All the faith he had had had had no effect on the outcome of his life.”
Pathological test set (Left: baseline, Mid: phrase structure based features, Right: word relation based features)
“zero zero four cd three oh seven zero zero zero zero zero zero zero three zero zero zero zero zero zero zero one .
”
“added dot-net framework install in script backslash backslash m b x hyphen t o p o c e n t r a l backslash clientsetup backslash v m c l i e n t s e t u p dot c m d comma to fix issue of running dot-net binaries on w two k .
”


Fibonaci algorythm
one virable function
epsilon
bottom interval
top interval
solve
newtons method
one virable function
epsilon
starting point
numerical derivatives
first derivatives
second derivatives
solve
powell algorithm
one virable function
epsilon
starting point
interval
solve
gaussSeindel algorythm
function
epsilon
starting point
solve
fastest desent algorythm
function
epsilon
starting point
solve
powell's conjugate direction
function
epsilon
starting point
solve
conjugate gradient
one virable function
epsilon
starting point
solve
Minimum in direction
function
epsilon
starting point
numerical derivatives
first derivative
second derivative
direction
solve
gradient
function
delta
point
solve


A class that makes an XMLHTTPRequest for us, given a url One important thing that request does is to hold the current GL context for us so that when loads complete, we can go back to our previous context
@constructor
At the time of construction note down the WebGL context as we will need that as the active context may have changed - async remember
Decide how to parse the data we have
Doesnt seem to output any responses :(
Basic DOM String - pass on
Just pass on the data
get - Actually perform the request. Pass in a callback to handle the data
Are we running in the browser? If so go with XMLHTTPRequest, else go with node's readFile instead
Must be running on node (for tests etc) We still provide the same interface however but we basically callback instantly Issues may occur given this files location in the source tree :S
TODO - should we really be doing a toString here?
Resources
http://coffeescriptcookbook.com/chapters/ajax/ajax_request_without_jquery
TODO
// Check for the various File API support. if (window.File && window.FileReader && window.FileList && window.Blob) { // Great success! All the File APIs are supported. } else { alert('The File APIs are not fully supported in this browser.'); }


Created: 2017-04-03 Mon 11:50
Some source code using hightlits.js
(def clojure-devs "love brackets")
cherries <- sum(windows == "C") diamonds <- sum(windows == "DD") c(0, 2, 5)[cherries + 1] * c(1, 2, 4)[diamonds + 1] payoffs <- c("DD" = 800, "7" = 80, "BBB" = 40, "BB" = 25, "B" = 10, "C" = 10, "0" = 0) same <- length(unique(windows)) == 1 allbars <- all(windows %in% c("B", "BB", "BBB")) if (same) { prize <- payoffs[windows[1]] } else if (allbars) { prize <- 5 } else { cherries <- sum(windows == "C") diamonds <- sum(windows == "DD") prize <- c(0, 2, 5)[cherries + 1] * c(1, 2, 4)[diamonds + 1] }
I love red.
Hightliht text as a fragment of the slide
Press the "Down" key on the page or the down arrow to trigger fragments
#+ATTR_REVEAL: :frag
* Create
* Fragment
* At Ease
Change slide style to wake up the sleepy audience.


SDLTRSText GUIIntroduction | Features | Options | Text GUI | Known Bugs | Release History | Credits |
The main menu is the entry point for the Text GUI. You may move up and down through the menu items using the arrow keys. The Home and End keys moves to the first or last menu item. Typing the first letter of a menu item marks it for selection. Pressing a number key from 0 to 9 jumps to the line in the menu. A menu item may be selected by pressing the Enter, Space or Tab key when the item is highlighted. Pressing ESC moves up a menu level (or exits the GUI if you are at the top level). Besides entering the GUI using F7 or Alt-M, submenus may be entered by using the key shortcuts shown after the menu items.
The floppy disk management menu allows you to insert and remove floppy images into the emulated drives, as well as save and load disk sets, create new disk images, and set emulated disk drive options.
For the first 8 options in the menu, there are three options:
This option allows the user to save the names of the disk images that are
currently in the drives to a file, to be loaded later. The file that the set
is save in has an extension of .set
, and it is a human readable
text file, containing the paths of the image files, or a blank line for a
drive for a drive that has no disk.
This button allows the user to load a disk set saved earlier with the Save
Disk Set Button. The user is allowed to browse for the set file, displaying
files ending in .set
. The emulator then loads the disk images
specified in the file into the corresponding drives. If a drive in the set
file is a blank line, no changes are made to the drive. This allows the user
to load multiple disk sets sequentially.
When the user presses Enter on a Drive item in the Floppy Disk Management screen, the file open menu is displayed. The arrow keys and page up/down may be used to scroll through the list of files. Home and End moves to beginning or end of the list. Pressing Enter on the <..> item will take you to the parent directory. On Windows, the Drive letters are listed as the last items in the menu, and you can change drives by pressing Enter on those items. You may also go to a particular section of the file list by pressing the first letter of the file name.
In the Floppy Creation screen, you may choose a format of a disk. It may be created in either the JV1, JV3, or DMK disk image format (See the Features page for info on the disk formats).
If the "Insert Created Disk Into This Drive" is set to something besides none, the created image will be mounted on the specified floppy drive.
The first eight items allows you to set the size of each disk drive, as either a 5" or 8" drive.
Specify what type of double density adaptor to emulate (Model I mode only). The type may be Percom, Tandy, Both, or None. The default is Both, which causes the double density adaptor emulation to respond to the special commands of both the Percom and Tandy cards.
Turn off the single density data address mark remapping kludges described in the "Emulated floppy disks" and "Real floppy disks" sections above. With this option given, the distinction between F8 and FA data address marks is strictly observed on both writing and reading. This option is probably not useful unless you need to deal with Model I disks that use the distinction as part of a copy-protection scheme.
Note: only on Linux there is the last menu that allows to set the drive steps for real floppys:
The hard disk management menu allows you to insert and remove floppy images into the emulated drives, as well as save and load disk sets and create new disk images.
For the first 4 options in the menu, there are three options:
This option allows the user to save the names of the disk images that are
currently in the drives to a file, to be loaded later. The file that the set
is save in has an extension of .set
, and it is a human readable
text file, containing the paths of the image files, or a blank line for a
drive for a drive that has no disk.
This button allows the user to load a disk set saved earlier with the Save
Disk Set Button. The user is allowed to browse for the set file, displaying
files ending in .set
. The emulator then loads the disk images
specified in the file into the corresponding drives. If a drive in the set
file is a blank line, no changes are made to the drive. This allows the user
to load multiple disk sets sequentially.
The next four options allows you to specify parameters for creating a hard disk image (See the Features page for info on the hard disk formats).
If the "Insert Created Disk Into This Drive" is set to something besides none, the created image will be mounted on the specified hard drive.
The final option allows you to create a blank hard disk image.
The cassette management menu allows you to insert and remove cassette images into the emulated drive, as well as create new cassette images.
For the first option in the menu, there are three options:
The second option allows you to set the position of the cassette tape by changing the Position field. Valid values are 0 (fully rewound) through the number of bytes on the tape (at end of tape).
The third option allows you to define the default sample rate in Hz.
The fourth option allows you to choose a format of a cassette
(.cas
or .wav
).
If the "Insert Created Cassette Into Drive" is set to Yes, the created image will be used in the cassette drive.
The final option allows you to create a blank cassette image.
The stringy wafer management menu allows you to insert and remove wafer images into the emulated drives, as well as save and load disk sets, and create new wafer images with default parameters.
For the first 8 options in the menu, there are three options:
Specifies what TRS-80 model to emulate.
The default CPU speed of the selected TRS-80 model can be changed here, but use this with CAUTION: overclocking the Z80 will result in all forms of "timing-errors"!
Emulates up to 8 Stringy Floppy Drives for the TRS-80 Model I.
Emulate a "Lowercase Modification Kit" for the TRS-80 Model I.
Selects the speed-up modification for the TRS-80 Model I: None, Archbold or Holmes. Some games (i.e. Penetrator) do not run correctly with activated Speedup Kit Emulation.
In Model III or 4/4P mode select which Hi-Res graphics card to emulate, the Micro-Labs Grafyx Solution Hi-Res graphics card or Radio Shack Hi-Res card. In Model I mode, the HRG1B 384x192 Hi-Res graphics card is emulated. Note that the Model III and Model 4/4P cards from Micro-Labs are very different from one another.
The Lowe Electronics LE18 Graphics Adapter can also be emulated.
Various memory expansions can be emulated for a total of 2 MB RAM.
Specifies the foreground and background color of the SDLTRS window.
Default is white (0xE0E0FF
) for foreground and black
(0x000000
) for background.
Specifies the foreground and background color of the fullscreen Text GUI.
Default is white (0xE0E0FF
) for foreground and dark green
(0x344843
) for background.
Select among several sets of built-in character bitmaps. The three different options allow you to specify the character set used for each model, should you change models during SDLTRS execution using the GUI. In Model I mode, seven sets are available. The default, Wider, is a modified Model III set with characters 8 pixels wide; it looks better on a modern computer screen with square pixels than the real Model I fonts, which were 6 pixels wide. LCmod is the character set in the replacement character generator that was supplied with the Radio Shack lower case modification. Stock is the character set in the stock character generator supplied with most upper case only machines. Since SDLTRS currently always emulates the extra bit of display memory needed to support lower case, this character set gives you the authentic, unpleasant effect that real Model I users saw when they tried to do homebrew lower case modifications without replacing the character generator: lower case letters appear at an inconsistent height, and if you are using the Level II BASIC ROM display driver, upper case letters are replaced by meaningless symbols. early is the same as stock, but with the standard ASCII characters [, \, ], and ^ in the positions where most Model I's had directional arrows. This was the default programming in the Motorola character generator ROM that Radio Shack used, and a few early machines were actually shipped with this ROM. Genie gives an emulation of the Genie I/II (relabled Video Genie in Germany) with German characters. HT-1080Z emulates the HT-1080Z (relabled Video Genie in Hungary) with accented Hungarian characters. Video Genie displays the character set of the EACA Video Genie (also labeled as the System 80 in Australia/New Zealand and PMC-80/81 in North America).
In Model III, 4 and 4P modes, three sets are available:
Katakana (the default for Model III) is the original Model III set with Japanese Katakana characters in the alternate character positions. This set was also used in early Model 4's. International (the default for Model 4 and 4P) is a later Model 4 set with accented Roman letters in the alternate positions. Bold is a bold set from a character generator ROM found in one Model III, origin uncertain.
Put a border of width pixels around the TRS-80 display. default is 2.
In Model 3 mode, resize the window whenever the emulated display mode changes between 64x16 text (or 512x192 graphics) and 80x24 text (or 640x240 graphics).
In Model 4/4P mode, resize the window whenever the emulated display mode changes between 64x16 text (or 512x192 graphics) and 80x24 text (or 640x240 graphics).
This options allows scaling of the SDLTRS window by the selected factor: "none", "2 x", "3 x" or "4 x".
This option allows the user to chose if disk activity indicators and Turbo Mode LED are shown in the TRS-80 Emulator window (lower edge).
This option draws Scanlines on every second line of the emulator screen to simulate the pixel resolution of an old CRT monitor. The brightness of the scanlines can be adjusted from 0 (= dark) to 255 (= light).
Turn on/off ability for emts (Emulation traps) to write to unexpected places in the host filesystem.
Fine-tune the keyboard behavior. To prevent keystrokes from being lost, SDLTRS "stretches" the intervals between key transitions, so that the Z80 program has time to see each transition before the next one occurs. Whenever the Z80 program reads the keyboard matrix and sees an emulated key go up or down, SDLTRS waits cycles Z80 clock cycles (T-states) before it allows the program to see another key transition. Key transitions that are received during the waiting period or when the Z80 program is not reading the keyboard are held in a queue. The default stretch value is 4000 cycles; it should seldom if ever be necessary to change it.
Set the tty device to be used for I/O to the TRS-80's serial port. Setting the name to be empty emulates having no serial port.
Set the sense switches on the Model I serial port card. This option is
meaningful only in Model I mode, and only when the Serial Port Name is not
set to "". The default value is 0x6f
, which Radio Shack software
conventionally interprets as 9600 bps, 8 bits/word, no parity, 1 stop bit.
Chose Shift Bracket Emulation on or off. If on, emulate [, \, ], ^, and _ as shifted keys, and {, |, }, and ~ as unshifted. This is the default in Model 4 and 4P modes, and it works well with the keyboard driver in Model 4 TRSDOS/LS-DOS 6. If off, emulate [, \, ], ^, and _ as unshifted keys, and {, |, }, and ~ as shifted. This is the default in Model I and III modes, and it works well with many TRS-80 keyboard drivers. With some keyboard drivers these keys do not work at all, however.
Turn Sound Output on or off. The Alt-U key binding may be used to switch Sound Output on or off while running the emulator.
This will turn Turbo mode on or off. When turbo mode is on, the emulator will run faster than a normal TRS-80, by a factor of Turbo Rate, which is explained below, and also set on this page. The F12 key or Alt-N may be used to switch Turbo mode on or off while running the emulator.
Set the number of times normal TRS-80 speed that the emulator runs when in "Turbo" mode. Turbo mode can be used to speed compute intensive applications, compiling source code for example, on the emulator. The default setting is 5x. Above around 8x you may experience problems with runaway keyboard repeat on the emulator, so use higher values with caution.
While pasting from the clipboard to the TRS-80 emulator, Turbo mode is temporarily activated.
This menu item allows you to save the state of the emulator, so that it may be loaded later with the Load State command. Disk images inserted into the computer are stored in the state file.
This menu item allows you load a state file (.t8s
) previous
saved with the Save State command.
This menu item allows you to save the configuration of the emulator, so
that it may be loaded later with the Load Configuration command.
Configuration files (.t8c
) are discussed further on the Features page.
This menu item allows you load a Configuration file (.t8c
)
previous saved with the Save Configuration command.
Selecting this option will cause the printer output file to be closed, and the printer command to be executed using the file name.
Controls the type of printer emulation that is used for outputting to the TRS-80 printer: None and Text.
Text simply sends the printer output to a text file (automatically
created from trsprn0000.txt
to trsprn9999.txt
)
with optional script processing.
The only option for the text printer type is the command used to print.
Within the command, %s
is used to represent the file name of the
temporary file generated during printing. On UNIX like systems this defaults
to lpr %s
and on Windows to notepad %s
. The
%s
in the printer command will be replaced with the name of the
printer output file.
This item determines if the numeric keypad is used for emulation of a joystick.
This item allows the user to select which USB joystick, if any, is used for emulation of the TRS-80 Joystick. It will bring up a list of the USB joysticks that SDL is aware of as shown below:
These options allows the user to map keys or functions of SDLTRS to Joystick buttons. Use "Write Configuration File" in the Configuration/State File Management menu to save the mapping.
This menu allows the user to specify the default directories used for loading/saving various types of file used by the emulator. To choose the directory, press Enter when the appropriate entry is highlighted.  The arrow keys, page up/down and Home/End may be used to scroll through the list of directories. Pressing Enter on the <..> item will take you to the parent directory. On Windows, the Drive letters are listed as the last items in the menu, and you can change drives by pressing Enter on those items. The directory is selected by pressing the Tab key.
This menu allows you to chose the ROM files used in the emulation of the TRS-80. These files are not provided with the emulator. To select the file, press Enter when the appropriate item is highlighted, and the file selection menu will appear. It's operation is explained in the Floppy Disk section above.


How I built my blog with Grunt
Most of the contents of this blog used to live in WordPress, and it was all good. But after a while I started noticing small things. For example, the analytics is very minimal. Or the editor is quite slow, with a very poor support for syntax highlighting (well, basically none). And these are all things that I know how to fix! So I decided to move the blog somewhere else, and implement all the things as I like them to be! I am a developer after all, right? 😎
Custom DNS
First thing first, I want my name on it! At the time they just started
selling the new .blog
domains, and I got mine at a very affordable price.
That was easy.
It has to be free!
The DNS was cheap enough, but what about the hosting? A blog is just a bounce of static contents, how much would it cost me? Well, if you host the whole thing on GitHub it's all free! Perfect!
But, how do I connect my domain name with my repository? My first solution was
to use the GoDaddy's redirect feature with
masking, but… Well, they just take your content and put it in a giant
<frameset>
… Bad GoDaddy!
So, read the documentation! OK, on the GitHub side, I just had to create a
file named CNAME
in the root of my project and put my domain name in it, as
simple as:
guido-barbaglia.blog
On the GoDaddy side (Manage DNS, or something similar), I had to remove
the default A
and CNAME
records and add the GitHub ones:
| Type | Name | Value |
|---|---|---|
| A | @ | <IP_ADDRESS> |
| A | @ | <IP_ADDRESS> |
| CNAME | www | kalimaha.github.io |
Mobile first
You have probably realized that I am not a designer by now… But I want to have a decent looking blog, and it has to be readable on desktop, tablet, mobile and everything else. How can I achieve all of this with the minimum effort?
I usually rely on Bootstrap, which allows me to focus on the business logic of my front-end stuff withouth worring much about the look and feel. I just need to use Bootstrap's classes and its nice grid system, and everything looks decent enough. What is more, it looks nice at every screen size, and I don't have to do anything.
Hooray! 🎉
Markdown, please!
One of the reasons why I "left" WordPress was the editor. The WYSIWYG is slow, and the code editing is not nice enough. The biggest pain was the syntax highlighting, unsopported, which forced me to write my code in Gist and embed the relative script into the post. Not so nice.
On the other hand, there is a solution that I use every day to document my code, a solution that also let me write code snippets with no struggle at all: markdown!
My plan is simple: I write my post with the markdown syntax, and then something translates it into HTML. That something is the ShowdownJS, which work nicely both in NodeJS and in the browser.
The only thing that's missing in such library is the syntax highlighting, so I just added Hihghlight, which automagically detects the language of the snippets and applies the correct color scheme.
Be social
Hopefully people will read my posts, and maybe someone will find such posts worth sharing with others on the major social networks. I then needed to provide a nice set of share buttons at the end of every article. I first tried some JavaScript library, but nothing was quite right. I then realized that it's not rocket science, I just need some nice looking icons that point to the right links. The icon set is provided by the awesome FontAwesome, and creating the links was as easy as Googling it:

Feedback
As we seen before, my users are super interested in my posts and they share them all over the internet. But, what if they want to discuss my super interesting solutions with me? To provide such opportunity to my beloved readers, I've added Disqus, an online community that is widely used for comments on blogs and websites. Speak to me mates!
Structured data
If a tree falls in a forest and no one is around to hear it, does it make a sound? We agreed that my contents are incredibly interesting, but how do you find them? Well, through Google right?
Apparently, Google understands a particular JSON dialect, namely
JSON-LD, that is used
to describe the content of your page. There are several templates that can be
used for different types of contents: articles, recipes, and so forth. Such
JSON can be anywhere in the page, embedded in a script
tag. The JSON-LD I am
using for my articles looks like that:

Putting all together with Grunt
At this point I have all the pieces sorted out, but how do I put them together?
The first solution I have implemented was a blueprint HTML page with a little
JavaScript function invoked in the onload
which loaded and populated an
Handlebars. The problem of this solution is that
your content is not immediately available to your readers, and to Google
crawlers. Basically I had a blog full of empty pages. 🤔
The current solution uses Grunt to pre-process my markdown files and produce nice HTML files that are immediately available for the readers (and Google!). The Grunt task I use is dead simple. The first step harvests a given directory to fetch all the content (markdown) files:
const get_filenames = (grunt) => {
var filenames = [];
grunt.file.recurse('./src/contents', function(a, b, c, filename) {
filenames.push(filename)
});
return filenames
};
Then, for each file, Grunt:
- loads the markdown file
- converts it into HTML
- highlight the code snippets
- load the Handlebars template
- injects the content
- creates and inject the JSON-LD
- write the HTML file
So basically, all I have to do is to write my posts using the markdown syntax and then run one single command:
grunt
I then push all the changes to my GitHub repository and my blog is online. Mission accomplished! 😎