text:
Trade Unions in the Post War Picture (1945)
From the April 1945 issue of the Socialist Standard
In the early stages of the present conflict, the leaders of the British Trade Union movement temporarily relinquished, at the request of the Government, many rights and privileges which had been won by struggles both on the political and industrial field during a period of sixty years.
It is very doubtful, if, with the information now available, the leaders consulted the rank and file of their members before agreeing to relinquish these rights and privileges, and appears to be a case of the dispensation of largesse without consultation. In addition to the rights and privileges forfeited—which the ruling class and the leadership of the Trade Union members "assure" the working class will be restored immediately the present conflict is brought to a successful conclusion—many additional embargoes and restrictions have been placed on the Trade Union movement by numerous legislative acts. These too have been, almost without exception, accepted on behalf of the membership by the leaders—again without consultation—and the assurance that all restrictive legislation will be withdrawn at the cessation of hostilities given by the capitalist class through its political mouthpiece, the National government.
Whilst the position has perhaps been accepted in a laissez faire manner by most trade unionists who have at best a very limited knowledge of capitalist society and its mechanics a minority of class conscious trade unionists are extremely sceptical concerning any assurance given by the capitalist class through its political machine. A sound knowledge of the industrial and political history of capitalism—in this or any other country—fully justifies this sceptimism. In spite of the fact that the old adage "History repeats itself" is generally considered to be moth eaten and obsolete, it remains nevertheless true.
It appears conclusive that the restoration of rights and privileges and the removal of restrictive legislation, either wholly or partially, will only be accomplished-by an intensive struggle on the industrial field. Whilst a struggle of this nature may be necessary, and even if the working class are able to secure the restoration of industrial rights and the withdrawal of repressive legislation—and the writer is by no means sure that will be accomplished either wholly or in part—the class position of trade unionists as members of the propertyless class will remain generally unaffected. Whilst the working class operate the machinery of production and do in fact produce wealth in superabundance, they do not own the machinery of wealth production. The ownership is vested in the hands of a small minority who play no part, or at best a very insignificant part in wealth production. All that is possessed by the working class as a whole is its labour power. In return for producing wealth, it receives a small proportion back in the form of wages, in order that it might purchase the common means of life. The working class is obliged to sell its labour power in an open market, a market wherein the possessing class follow the inexorable maxim of buying labour power as cheaply us possible. During periods of so-called booms or prosperity within capitalist society, when there is what is termed a shortage of labour power, the working class or at least sections of it may be able to secure a higher return for labour power. Daring periods of so-called depression, when unemployment looms large on the industrial horizon, the working class as a who!e is forced to sell its labour power at a much lower figure. "When ten men compete for one job, wages will of necessity fall " said Marx.
Trade Unionists will sooner or later realize that capitalism—i.e., the private ownership of the means of wealth production and distribution—is the cause of their poverty and its attendant evils, and that any and all reforms within capitalist society will do nothing more than to bring about some slight amelioration of the poverty problem. Trade Unionists will ultimately accept the Socialist case of the S.P.G.B., that the only solution is the ownership and democratic control of the means of production and distribution by the working class, to be administered in the interests of the community as a whole. With this understanding clearly established in the mind of the working class, we shall be standing on the threshold of a new and happier era in human history.
Lewis Lee
Posted by Imposs1904 at 1:26 PM 1 comment:
Labels: April 1945, Class Struggle, Lewis Lee, R1945, Trade Unions, World War Two Links to this post
May-Day — The Workers Must Choose (1945)
From the May 1945 issue of the Socialist Standard
After nearly six years of war, both the capitalists and the workers may check their balance sheet. It is a fearful reckoning, A large part of Europe, including Britain, is a mass of ruins and the fighting there is not yet done. The casualties for all the countries together already exceed in number those of the last World War; Russia alone is said to count fifteen million victims. And in the Far East the war area has yet to resound to the fury of further major battles.
In towns comfortably distanced from the battlefields, the leaders of the Not-So-United Nations, feeling victory close at hand, meet again and again to continue their haggling over world-dominion. Europe, and perhaps the whole world is to be carved up like a chicken to satisfy the appetites of the Big Three. This is called: "Zoning the World into Spheres of Influence and is claimed to be a step towards everlasting peace. The War, which like its predecessor of 1914-1918, began as a "holy crusade" for the independence of small nations, will end by swallowing many of them.
The military conflicts which have periodically decimated capitalist society are bloody replicas of the struggle continuously being waged in the world of "business." "The bigger capitalist lays his smaller fellow low and he, in turn, is swallowed by a yet more powerful rival." But combines and cartels do not end commercial rivalry—they intensify the struggle. Nor will the emergence of the three victorious world-empires solve the problem of war. The differences between the U.S.A., Britain and Russia, already evident whilst still "comrades in arms" are guarantee of that.
The policy of the U.S.S.R. in relation to its smaller neighbouring countries has given the Soviet's "left-wing" admirers many a sleepless night. After preaching for years about "the one and only Socialist country in the world," these worthies find it difficult to explain why their idol is behaving in the very mundane, i.e., capitalist fashion of victorious ruling classes, by seizing large tracks of alien lands on the old capitalist plea, of course, of national security."
During the last war the slogan of the Bolsheviks was: "No Annexations, No Reparations"! The contrast with the war aims of Russia to-day helps to show how remote the rulers at the Kremlin are from working class aspirations.
Only those utterly unsophisticated about world-affairs can still cherish the old illusions born out of the Russian Revolution. The official alliance with a growing religious hierarchy tells its own story. Even more obvious is the careful fostering of a fanatical nationalism.
The ruling class of Britain cannot view the trend and outcome of the European war with satisfaction. Forced to deal with German domination over Europe a second time within a generation, they have eliminated this rival only to watch the rise of a more formidable one. in this way does capitalism pile up one problem on another until the weight of them will crush the morale out of rulers everywhere. Their impotence to put the world aright will be plain to all and the myth of their greatness vanish.
However, in their present state of mind, the workers are at the beck of ruling class needs and propaganda. Nationalism in one country begets its echo in others. When the debacle of Social Democracy and of the Communists in Germany first opened the door to Hitler, many hoped this would be the prelude to a working-class renaissance the world over. This was mistaken. The mass organisations on which the workers pinned their hopes have either collapsed or else, as in France, Britain and the U.S.A., become adjuncts of the capitalist state used to keep the workers in order. The end of the last war found the workers in a mood of rebellion. The defeat of the Russian armies opened the road to power for the Bolsheviks and their success quickly infected the war-weary soldiers and workers of other countries. The present conflict, which began with the high hopes of some who saw in this "war against Fascism" unequalled opportunities for the workers to take control, is ending with the workers less assertive as an organised force than before. Mr. Churchill feels able to congratulate himself and his ruling class cronies that the war has become "less ideological in character."
But the ruling class cocks may be crowing too soon. The worker's revulsion against the last war was directly attributable to the physical suffering of four years fighting in the trenches. As the memories of this inhuman travail faded so did the newly born militancy. The Labour and Communist parties, the main beneficiaries of this upsurge, sapped the workers of their revolutionary energies and enthusiasm and finally the sorry residue was unable to withstand the shocks of the world crisis. Since then, a new generation has been growing up, working class men and women who have had no hand in building up the old Labour parties and who have never been the slaves of the Moscow tradition. Their political allegiance is unknown. The politicians in this country busily preparing for an election which, for the major parties, can be nothing more than a sham fight except for the privileges and cash rewards of office, are frankly uneasy.
It is generally admitted that the new generation is far less susceptible to promises than their fathers were. They are said to be cynical about all the established political parties and the experienced political soothsayers cut no ice with them. So far, so good.
But cynicism is negative. It would be too much to expect the fruits of this scepticism to ripen immediately, for Socialist propaganda has during the War been severely restricted and opportunity for reflection rare. But during the coming years, the workers young and old, will sort out their ideas gathered during the fighting and the bombing; they will have time, possibly in the dole-queues, to recollect their experience of sweating in the factories. There can be no illusions for them about their future under capitalism. The slumps will come as regularly as they have done hitherto until the next war sends the capitalists hurrying to their coffers again to pay out wages for guns and bombs. The development of long range automatic weapons during this War is a foretaste of what will happen during the next.
The fundamental driving forces behind the movement for Socialism are the rigours, the hardships of a working-class existence under a social system that turns out wealth unlimited and permits only a minority to enjoy it. This contradiction makes fools or knaves out of all supporters of capitalism who pose as champions of working class desires. Only Socialism can explain the riddle. Very soon the economic problems of a capitalist world at "peace" will make their reappearance. They will affect the workers of all lands, "victorious" and "defeated" alike. Instead of fighting each other, the working class will be forced to fight their own employers for their daily bread. This time there can be no excuse for apathy or ignorance. The bereaved and the suffering will add their cries to the voice of Socialism and it will be heard, and understood, all over the world.
Sid Rubin
Labels: May 1945, Post-War Europe, R1945, Sid Rubin, Soviet Imperialism, World War Two Links to this post
So You Want To Be A Capitalist? (1945)
From the June 1945 issue of the Socialist Standard
Let us warn you against ambition. It is an illusion, a tantalising will-o'-the-wisp, causing untold frustration and disillusionment. Many workers fall under its attractive spell only to discover eventually the futility of ever hoping to achieve their desires.
Please do not misunderstand us. We are referring to ambition in a limited sense—the ambition of the average worker "to get on." The callow youth who is prepared to work hard and conscientiously in an attempt to rise above it all, and obtain a life of luxury and ease. Have you fallen prey to the foul, insincere propaganda of our masters when they endeavour through various channels to instil these naive notions into the minds of the, as yet, gullible masses? The object of their tactics is transparently clear. If the worker accepts the proposition that the capitalist is where he is as the result of hard work, etc,, the worker at once, by implication, condones the existence of the system that exploits and impoverishes him. Added to this he is deluded into believing that he too will, one day join that select parasitic group—the so-called "captains of industry."
Let us indulge in some very straight talking directed to the capitalist class. As far as we of the Socialist Party are concerned we would ask you to quit trying to fool us at any rate. One of your spokesmen. The Marquis of Londonderry, in an article entitled "Why Work?" writes as follows:—
"We cannot live without work, and as it is the laudable desire of most people to attain a far higher standard of living, it can come only through harder and more intelligent work by all classes." and, yet again, "Success is the result of hard work, and those who have succeeded must have thought it anything but an affliction-—or they, would have failed." —("Sunday Express," August 6th, 1944). (Our italics).
Yes, it is true that you are in your economic position as the result of hard work—the hard work performed by us, the working class. Yes, you are there as the result of applied brains and intelligence—our brains and our intelligence. To use an Americanism we are wise to you. The way you permeate even the minds of school-children with your romantic versions of success and ambition. It is a very efficient means of obtaining a high degree of toil out of our carcasses—you dangle a red herring which forever eludes our grasp. Under capitalism the broad mass of the population will unceasingly experience poverty-stricken conditions, notwithstanding the quantity and quality of the energies that the workers may put forward. If hard work is the road to financial success then we all deserve to be millionaires, and if idleness and indolence are the causes of failure then may we respectfully ask how is it, then that you are all so damnably successful?
But now let us address our remarks specifically to our fellow workers. We assure you that ambition and hard work will prove very poor aids. If you find yourself a member of the working class you can be absolutely positive that, short of an Irish Sweep Stake win (and anyway even these have now been discontinued), you are doomed, under capitalism, to remain in perpetual poverty. Try as you will, strain as you may, the barriers dividing the two classes are well-nigh insurmountable, and should you be so foolhardy as to pit your puny efforts against them in an endeavour to climb up, then you will eventually find yourself lying breathless and shaken on the ground, and the effort may have sapped your health and strength.
The socialist realises that the future of the workers lies in the complete elimination of capitalism. We too have an ambition but it is harnessed to the world of scientific reality. The desire to help in the conversion of the minds of our fellow workers to the socialist case so that a politically conscious revolutionary majority can establish a sane order of society—socialism. And then, for the first time in history, all men and women will be completely free to exercise their personality and attain within their life-span a fulfilment of ambition—an ambition which automatically will coincide and harmonise with the interests of the whole of society.
Samuel Leight
Labels: Capitalist Ideology, June 1945, R1945, Samuel Leight Links to this post
This Phoney Election (1945)
Editorial from the July 1945 issue of the Socialist Standard
Voters who try to interpret the issues in the election by studying the more flamboyant utterances of the Party leaders may well wonder what it is all about. For five years the Labour leaders, endorsed by the overwhelming vote of their Party Conference, at the outset, have worked in the Government with the Tories in furtherance, as they claim, of the war for democracy. Then suddenly they part company and instantly Mr. Attlee finds that Churchill's proposed referendum on the continuance of the National Government is "alien to all our traditions," though it comes from the man who was claimed by the Labour Party to be the embodiment of the British tradition, and that it is a device "which has only too often been the instrument of Nazism and Fascism."
Then in his first election broadcast Mr. Churchill retorts that " Socialism)" by which he means the (State Capitalism of the. Labour Party, threatens us with a "Gestapo in Britain." "Socialist policy" declared Mr. Churchill, "is abhorrent to the British ideas of freedom. It is inseparably interwoven with totalitarianism and the abject worship of the State."—( Daily Express, June 5, 1945).
From which the innocent looker on may deduce that the "war against totalitarianism" has been conducted by Tories who are in favour of it and by Labourites who are in favour of it, and that whichever wins the election totalitarianism—ended in Germany—will be firmly established here.
Another equally phoney issue of the election is the alleged gulf of principle between the Labour Party, which seeks some form of State Capitalist ownership or control of certain industries, and the Conservatives and Liberals who are supposed to be opposed to it. Yet the nationalisation of the postal, telegraph and telephone services and the formation of the London Passenger Transport Board . . . and similar monopolies by Act of Parliament were the work of Liberal and Tory Governments; and it was Mr. Churchill who in 1918 declared in a speech at Dundee that the policy of the Government of which he was a member was the nationalisation of railways.—(Times, December 5, 1918.)
Mr. Churchill declares that the election is a fight between individualism and Socialism and between his own Party and the "Socialist Party." By individualism he means capitalism, which has, however, long since got past the stage of a competitive struggle between independent small capitalists and gone over increasingly to giant monopolies.
The Labour Party, equally anxious to misrepresent the situation, accepts Mr. Churchill's "terminological inexactitude" that they are a socialist party and declares in its Election Declaration ("Let us Face the Future"), "The Labour Party is a Socialist Party and proud of it"—and then proceeds to give us a blue-print of the State Capitalism that they propose to retain and develop.
Lord Croft, Parliamentary Under Secretary for War, even more wildly inaccurate thau his leader, Mr. Churchill, discovered that the in fact always anti-Marxist Labour Party, "wish to impose upon the British people the crude ideas of the German Marx."—(Evening Standard, 24th May, 1945) and reached a peak of falsification in the further remark that Marxism is "not so very different" from Nazism. He quoted a declaration by a prominent Hitlerite that Nazism was "Socialism" but forgot to add Hitler's own repeated claim that it was based on the total rejection of Marxism. Lord Croft might more accurately have said that in respect of rigid controls Nazism has not been far different from the controls imposed in this country during the war by the Tories, Liberals and Labourites in the National Government.
The Liberal Manchester Guardian accurately appraises the smallness of the differences between the three largest parties. Criticising Mr. Churchill, the Guardian says:—
"Because it (the Labour Party) proposes a relatively modest programme of public ownership he leaps to extravagance about totalitarianism and the Gestapo. He would be more convincing if he got to grips with things: if, for instance, he showed why Major Lloyd George's 'Central authority' for coal is likely to secure greater efficiency than Labour's 'National authority,' why Mr. Hudson's plans for regulated food imports are better than Mr. Bevin's, why the Government's national insurance scheme is better than the Beveridge plan, why Mr. Lyttleton's ideas on the curbing of monopoly are sounder than Mr. Dalton's. But that, as Mr. Churchill knows, would give the game away. Good rotund eloquence meaning nothing in particular is far safer."—Manchester Guardian," June 5th, 1945.)
The I.L.P. which in recent years has boasted that it had for ever shed its old illusion, was back again where it started, pleading to be allowed into the Labour Party—a plea that was rejected.
The Communists, having temporarily pigeonholed their year-long claim that the Labour Party is "the third capitalist party" is backing that Party in most constituencies though at Rhondda East, Pollitt, the Communist candidate, is running against a Labour Party nominee who is backed by the S. Wales Miners Federation the President of which, Arthur Horner, is himself a leading Communist.
No doubt the real reason for the election is simply that since an election had to come sometime the Conservative Party wanted to get in quickly before the workers had had time to taste the bitter fruits of victorious peace. As caretakers of capitalism they need re-election to handle the difficult capitalist problems during the adjustment from military war to trade war and they count on gaining a majority.
Reading between the lines it seems likely that a Conservative victory will be received with relief at Labour Party headquarters since if the Labour Party happened to win no one would be more embarrassed than themselves.
We confidently make one electoral prophecy. Whatever the result capitalism will be safe because the majority of the working class are not yet Socialists. Whether capitalism has a little less state control with the Tories or a little more with the Labour Party is not an issue that ought to concern the working class. When they know their own class interests they will make the issue Socialism versus Capitalism as the Socialist Party is doing in North Paddington. Our campaign in North Paddington is the beginning of the real electoral fight for the emancipation of tho working class.
Labels: Clement Attlee, Editorial, General Election 1945, July 1945, R1945, Winston Churchill Links to this post
A World That Changes But Remains The Same (1945)
Editorial from the August 1945 issue of the Socialist Standard
Since the war cloud has lifted from Europe another cloud has descended which is slowly smothering the bright promises with which the fighters' and the sufferers were fed. The golden and futile promises of war time are giving place to the ugly realities of capitalist peace.
How often was it declaimed on platform and in print that Germany as a nation must be utterly shattered so that wars would come no more. The figment that wars were the product of people with a foul and brutal urge to dominate was spread and fostered to conceal the fact that wars are a product of economic conditions, and in the modern world, the product solely of capitalist conditions. How often was it urged that the United Nations, with high and unblemished ideals, were solidly united on basic principles that would exclude future wars and would bless their peoples with peace, comfort and security!
How soon the lie has been given to this hypocritical moonshine. French interests in the Levant struggling to keep their hands on oil; Russia pursuing its imperialist policy in Manchuria, the Dardanelles, Tangier; America striving for control of air lines; Britain, the older bandits, conniving for its share in the swag wrung from the surplus labour of the workers. Here is an example of the spirit that animates the class that rules us!
"The Canadian Pacific Railway Company have made a flying start in the post-war shipping race, aimed at giving Britain the lead, by ordering four crack 10,000 ton ships from a Glasgow yard."—(Evening News, July 7th, 1945).
This is just one sprint in the race that leads to more wars. Another was the report of an interview with Lord Nuffield in the Daily Express (May 25ih, 1945). The report is headed "Nuffield is out to beat foreigners" and it referred to the £ 1,000,000 car company he is starting in Australia.
"I have started the Australian company because I know that if we do not go in there in a big way others— and I mean foreign competitors—will get in first."
"By the time the Empire countries are ready to make cars entirely on their own it may well be that air transport will have developed to such an extent that we shall no longer talk of exporting goods from Britain to Australia."
"If people want cars at anything like the 1939 price, will they make the Government cancel the purchase tax? Will they give us cheaper steel? (That means more and cheaper coal). And will they he content with wage rates below an inflationary level."
The sting is in the last line. The attack on wages is beginning and the workers are about to reap the harvest of the better world for which they fought—hard work and lower wages.
The Daily Express, June 2nd, 1945, reports discussions between Russia and Turkey which should give those who put faith in the protestations of peace and justice something to ponder over. After pointing out that Salim Sarpor, Turkey's Ambassador, is on his way to Moscow with Turkey's answer to the proposals Russia made that Turkey give up control of the Dardanelles, revise Turkey's North East Frontier Provinces, and democratise the Turkish constitution, the Daily Express reporter goes on;
"Turkey says 'Yes' in principle to all three. But she wants them postponed, not through insincerity, but to give an air of negotiation to concessions she knows she must make (italics ours).
That last bit is a specimen of what "small nations," whose rights have been held up as a corner stone of the future, may expect from their poweiful competitors.
One of the idolised leaders of the Allies, General Smuts, on leaving the San Francisco Conference issued this warning:
"We buried our arms last time. One of the most potent causes of World War No. 2, was this illusion that there would be no more war. . . . Europe, a fragmented and broken-up continent filled with people glaring at each other with hate, is the greatest problem now facing mankind.
"The most awful calamity in history has overtaken Europe. Don't ask me who is the enemy	I don't know. It may be ourselves.
"We do not know what is going to breed out of this war. Forces that have been kept under by civilization are now unchained."—(Daily Mail, June 30th, 1945).
Such is the bright prospect before us!
Finally secret diplomacy, which is the very essence of this exploiting system under which we live, extends to the Berlin Conference of the "Big Three" which is to decide the future of Germany—and other very important carve-ups.
"It was officially, confirmed to London last night that reporters will not be admitted to the Big Three meeting at Potsdam. Communiques will be issued."— (Daily Express, July 7th, 1945).
What a joke on all the perishing freedoms we redd about in the Atlantic Charter and elsewhere!
It is still the old world in which the capitalist lives like a leech upon our industry and our only hope of a future free from poverty, insecurity and war is the determination of the workers to abolish the conditions that produce this state of affairs—the private ownership of the means of living. It is not the leeches we object to but the way they have of getting their living.
Posted by Imposs1904 at 12:25 AM No comments:
Labels: August 1945, Editorial, General Jan Smuts, Post-War Europe, Post-War Settlement, R1945 Links to this post

redpajama_set_name: RedPajamaCommonCrawl


An employee may have to submit fuel receipts to verify that the company's money was spent on gasoline.
Miles driven while moving for a job may be deductible.
A standard mileage rate is a fixed monetary amount a tax agency or government sets for each mile a taxpayer drives. This rate is used in deducting driving expenses if the taxpayer did the driving for business or charitable purposes. Often, tax agencies also set a standard mileage rate for determining the amount a taxpayer can deduct for driving done in relation to medical needs or relocating for employment or business purposes. In many cases, a standard mileage rate is used for deductions on tax returns instead of the actual amount of expenses the taxpayer incurred. The manner in which such deductions are handled may, however, depend on the country, region, and tax agency.
Though many people might like to deduct the automobile expenses they pay in a given tax year, automobile deductions aren't usually allowed for the majority of taxpayers. In some jurisdictions, however, a person does have the right to deduct automobile expenses from the taxes he is required to pay each year. For example, an individual may have the right to deduct vehicle expenses if he runs a business or incurred vehicular expenses in relation to a charity. A person may also have the right to deduct expenses he incurred during medical travel. Miles driven while relocating for employment reasons may be deductible as well.
When a person uses a standard mileage rate on his tax return, he does not need the exact monetary amounts he spent for his automobile in order to figure out the amount of the deduction he can take. Instead, he only has to know the number of miles he drove in order to take a vehicle expense deduction on his tax return. He can typically multiply the number of miles he drove by the standard mileage rate set by the tax agency. This rate may change from year to year, so a person usually has to check with the tax agency to learn which figure to use.
Depending on the jurisdiction, a person may alternatively choose to list the actual expenses for his vehicle on his tax return. This may include such things as gas and oil, repairs, maintenance, and insurance costs. A person may also deduct fees for licensing and registration, supplies required for the automobile, and depreciation. Often, lease payments, loan interest, and certain vehicle-related taxes are deductible as well. A person with vehicle expenses may choose to use the standard mileage rate since it allows for much simpler calculations, but determining actual expenses may be more beneficial if vehicle operating costs are high.
How do I Choose the Best Expenses Spreadsheet?
How do I Choose the Best Travel Expenses Form?


Security systems nowadays are taking advantage of the latest technology in order to defend homes in more sophisticated ways than ever before. Recent advancements in home automation has helped to take home security to the next level. You can now control many appliances, electronics and fixtures with software on portable computers or phones, and modern homeowners have also gained the ability to monitor security equipment from any internet connected or cellular reception area they have access to.
If you already own an alarm system, you can still boost its capabilities by signing up with a company that provides home automation services. Their technicians will install equipment into your home which allows you to automate and remotely control almost any device. The whole system will be integrated with your current security system so that you can communicate with the control panel through a smartphone app or mobile website.
After all the equipment has been connected, your security system can notify you by phone if a break-in occurs. You will also be able to activate or deactivate the system with your tablet or smartphone. It will give you full control of electronic locks, which can confirm if you have locked the front door or not, should you have a moment of forgetfulness. Best of all, you can watch live video streams from your home's surveillance camera. If you get a notification of any doors opening at home, you can use the video stream to be your eyes on the scene.
A home security automation system consists of a computer or other control unit which communicates with "intelligent" appliances, such as security alarms, and other "smart" appliances like washing machines, fridges, TV's etc. It can control lights and less-sophisticated devices by deciding when they turn on and off, and can also be set with auto timers. In addition to following these programmed schedules, modern systems use the internet to communicate and receive commands with smartphones.
This combination of security and home automation can really offer you greater peace of mind by allowing you to check on your home at any hour. This is even true for when you're on a trip halfway across the world. Home automation technology has the potential to minimize false alarms too. For example, you might receive an alert and turn off the siren after using a surveillance camera to see that it was accidentally triggered by a family member. You could even remotely unlock the front door for a trusted electrician or repairman.
Long before anyone had smartphones, home automation systems were used to switch things on and off at specified times. This is still used today, and it can provide an effective way to deter burglars. A thief is less likely to target a home with lights that stay on during the evening and shut off overnight. Today, it's even feasible to install automated, motorized shades on windows. The bottom line is that you can make your security equipment more effective and versatile by integrating it with a home automation system. At the same time, you'll have access to all the benefits of automated household appliances and fixtures. Automation enhances comfortability, it's convenient, it saves time, and it offers you total peace of mind.


text:
A Propos d'Ashoka Sahel
Sélection et Accompagnement des Entrepreneurs Sociaux
L'Ashoka Support Network
Salem Massalha
Facebook - Bassita
Other links - https://www.facebook.com/theclickfunding/
Fellow Since 2018
Bassita
This description of Salem Massalha's work was prepared when Salem Massalha was elected to the Ashoka Fellowship in 2018 .
Salem Massalha invented, successfully implemented and coined the term "Clickfunding"; a social innovation that allows social media users to contribute to positive change within their local communities at no cost, simply through the click of a mouse or the tap of a screen. By not only including previously marginalized actors, but also bringing together new ones, Salem is revolutionizing the act of fundraising across Egypt and the region.
L'idée nouvelle
By leveraging the use of social media, Salem Massalha is developing tools to unite new actors to contribute to social change, and generate additional funding streams for the citizen sector. Through his agile social innovation approach, Salem establishes a new model of smart co-creation and collaboration, in which unconventional actors such as, social media users from disadvantaged backgrounds or companies that did not previously have CSR agendas, start contributing to social change. Regardless of individual financial means, Salem is demonstrating how everyone can partake in social change through the navigation of the new attention economy. He is creating a new manifesto that declares that Everyone is in fact a Changemaker.
Although his approach involves several pillars, Salem's first social innovation is "Clickfunding"; an invention that allows social media users to contribute to positive change within their local communities at no cost, simply through the click of a mouse or the tap of a screen. He invented, successfully implemented and coined the term. By revolutionizing the world of web-philanthropy, Salem is hacking the conventional use of social media to transform it into concrete social, environmental and developmental impact.
Many believe that social media jumpstarted the Arab Spring in 2011. Deemed the "Facebook" or "Twitter" revolution, the movement was one of youth using social media sites such as Facebook, Twitter, and YouTube to mobilize themselves to topple the then-current political regime. This instigated 27-year-old Salem Massalha to harness the immense energy of more than 35 million Egyptian social media users through the power of "Clickfunding", the first campaign of which was launched in 2014. While this solution is a manifestation of the impeccable marriage of the worlds of social change and digital marketing, his future plans include the merging of not only diverse sectors, but also actors that may have never freely joined forces otherwise.
Le problème
The World Giving Index- the only comparative study of generosity across 140 countries- is based on three measures: have you given money to a good cause; have you helped a stranger; or have you volunteered your time over the past month. Conventional donation models have always reserved "giving back" to those, who have the luxury of time and/or money. Out of 140 countries, Egypt is ranked 112 in the World Giving Index with 24% of people adopting one of the aforementioned approaches to donate and create positive change in their communities. This, however, indicates that the largest portion, of the population that lacks the financial capacity to donate is marginalized, and automatically excluded from creating positive change.
This "inability to donate" has been exacerbated by a 30% national poverty rate in 2017 expected to increase with a rising core inflation rate, currently at 35%. Political upheaval, a declining tourism industry, the flotation of the Egyptian Pound and the gradual removal of subsidies are all factors that have drastically diminished people's financial capacity inevitably resulting in their ability, or lack thereof, to contribute to social causes.
Furthermore, most "giving" is undertaken on an ad hoc and individual basis by affluent individuals and local entities. Consequently, nothing is done to mitigate the duplication of efforts on-ground, there is neither transparency nor accountability between donor and recipient, and it is difficult to measure impact, since it's almost impossible to trace the trajectory of money given. This approach leaves leeway to move beyond the conventional model of charitable giving towards a more tactical model that creates lasting, sustainable social change.
Not only are funding streams unregulated, but it is becoming increasingly difficult for NGOs to raise funds through traditional channels ever since the government passed a new NGO law that strictly controls NGOs, including those in the realm of social and development work. It bans domestic and foreign groups from engaging in rights work or anything that can be perceived to harm national security, public order, public morals or public health. Since the government has long accused human rights groups of using foreign funds to plant chaos, lawmakers find the measure necessary to protect national security.
Although "crowdfunding", which allows anyone to financially contribute to a positive initiative through an online platform, has introduced a new way to mobilize funds for social causes, the model has failed to create significant impact in the Egyptian economy due to (i) the lack of credit card ownership and (ii) legal issues surrounding the framework. Since only 7% of the population owns a credit card, it is difficult for most people, even those who have the means, to donate online. Yet, the more dominating issue questions the model's legality. After 22 people were arrested on suspicion of EGP50 million in crowdfunding fraud in 2017, the Egypt public funds police department conducted a three-month crackdown in 5 governorates to tackle fraud crimes related to crowdfunding, leading to the collapse of most Egyptian crowdfunding attempts.
Besides crowdfunding, the only other campaigns attempting to create social impact are awareness campaigns, which have 2 problems; (i) their impact is not easily quantified and (ii) they are not professionally executed, since they have always been created by NGOs, not experts.
Furthermore, the only department responsible for developmental initiatives in large enterprises is its corporate social responsibility (CSR) department. No other department works with local communities and makes socially responsible investments.
Lastly, our society is being hijacked by technology. There are more than 35 million social media users in Egypt, and internet penetration rates will exceed 50% of the total population (95 million) by the end of 2018. Although aimless scrolling and tapping can be detrimental, the heavy use of social media platforms is not an issue in and of itself. What began as a contest to monetize people's attention is now destroying the sacred pillars of society. Facebook, Twitter, and Instagram have produced amazing products that have greatly benefited the world, but are caught in a zero-sum game for people's finite attention- indispensable to make more money. They manipulate people with AI-driven newsfeeds, content, and notifications, continually navigating attention to what they dub "fit", regardless of what is best for people's well-being. Because it is against their lucrative business models, it is highly unlikely for the aforementioned companies to change. Yet, the rules of the game need to be changed. Companies need to move away from technology that extracts attention and erodes society, towards technology that protects minds and enables society to flourish.
The day of Salem's Master's midterms at Cairo University, Egypt's premier public university, coincided with the first days of the Egyptian Revolution- January 28, 2011. Tanks were blocking access to the respectable campus, and the news spread like fire across all social media platforms. Impressed by the power of social media to mobilize masses, Salem wondered how he could harness the incredible energy of Egyptian youth to move beyond the realm of mere connection to that of direct social change. The answer was simple.
Through his social innovation lab, "Bassita" launched in 2014, Arabic for "simple", Salem develops innovative tools to enable new actors to contribute to social change; actors who previously had no major role in bringing about social change. Clickfunding, Salem's first innovation, has, thus far, integrated 13 million social media users into the fundraising process. By viewing, liking, commenting or sharing elements of a Clickfunding campaign, users generate points that are transformed into funding and implementation by partnering NGOs and sponsors. The more social media users interact with the campaign, the more impact is created on-ground. As opposed to crowdfunding which requires social media users to be financially capable to donate and own credit cards, clickfunding allows any social media user to donate just by engaging with the campaign. The model is an organic evolution of social media, where "previously aimless" clicks have value and are aggregated for concrete impact. Regardless of financial means, anyone can contribute to the cause. This method allows the recipient, the viewer and the sponsor to collaborate and co-create to satisfy communal needs and improve social solidarity. Just by clicking, a web user becomes a web philanthropist, advocating for a form of "Web-user Social Responsibility".
Hitherto, Bassita has been adopting a B2B business model. Their primary target market is positive initiatives looking for funding and visibility in a particular market. These could be NGOs, CSOs or International Organizations looking to positively change the community. The entities are approached by Bassita, which identifies their needs and starts creating a Clickfunding campaign in collaboration with the NGO. The NGO pays Bassita for its services- namely content creation and production of videos, infographics, and awareness posts. All profits are reinvested to create pro-bono campaigns for small NGOs. Next, Bassita pursues sponsors interested in funding the causes aligned with their respective objectives. These private sector sponsors are Bassita's secondary target. The sponsor agrees to donate the needed sum by the NGO, if a certain amount of views/likes/shares/comments is reached. Salem's model proves to the corporate sector that social investment is a marketing tool that will affect their sales in addition to creating an image of social consciousness for sponsors. Furthermore, Salem mediates between NGOs and the corporate sector by getting NGOs to identify their needs in ways perspicuous to the corporate sector. By connecting the online and offline worlds, Salem not only professionally raises awareness on important issues, but is also innovating new ways to raise funds.
To operate, Clickfunding relies on another innovative aspect of the social startup "Tech 4 Goods"; a tracking system that monitors all the interactions on a social media campaign (Twitter, Instagram, Facebook, YouTube). All interactions (likes, shares, comments, re-tweets) are transformed into points that go into the progress bar on Bassita's website. The more the progress bar is filled, the more sponsors pay for impact. If the progress bar does not reach the end goal, the sponsor only pays the financial equivalent of reached points. Preliminarily, the NGO and sponsor agree on the qualitative/quantitative impact to be achieved within a designated time frame, and Bassita does its due diligence through regular field visits to ensure accountability and transparency.
In just three years, "Clickfunding" has become one of the most efficient online models to raise funds and awareness for positive initiatives. Though Bassita has created Clickfunding campaigns for major actors such as UNICEF, Misr El Kheir, and the Egyptian Food Bank, it is largely focused on smaller NGOs such as Helm Foundation, Ashoka Fellow's Safarni, and Darb El Ahmar Art School. To date, Bassita has launched 10 campaigns, raised the awareness of 13 million clickfunders, and reached 36,000 beneficiaries. With a myriad successful campaigns, Bassita raised more than EGP10 million ($500,000) to fund social causes with some campaigns going viral in as little as 12 hours, while enjoying a seven-fold return on investment. Their latest campaign in favor of a more accessible Cairo for persons with disabilities organically reached more than 7 million views, and was shared by many influencers including the Egyptian Minister of Social Solidarity. Further, the Clickfunding campaign created for Safarni, an intercultural children's workshop founded by Ashoka Fellow Raphaelle Ayach, raised EGP1 million to support social cohesion in an area where migrants and Egyptians are still learning how to live together. Not only did the campaign successfully engage 1 million social media users, but also enabled Safarni to create on-ground workshops targeting 180 children and their parents from both migrant and host communities.
In addition to clickfunding, Salem is introducing a strategic approach to philanthropy, as opposed to individual one-off attempts, by mobilizing different actors, industries and stakeholders in the community. Some of the sponsors he has collaborated with are first-time donors such as Wadi Degla Sports Club, the Hilton Hotel and Careem (the Uber of the Middle East). He has also integrated different industries such as the cinema industry, and brought in film producers to create campaigns and famous actors to star in them. In the future, Salem also plans to involve the fashion industry.
His new project connects different stakeholders; the fishermen of the Nile River, and the garbage collectors of Greater Cairo, one of the most efficient, albeit informal, communities in the world, to co-create value for stakeholders, the end consumer, and the community. The fishermen extract garbage from the Nile, which is sold to the garbage collectors, who recycle and create bracelets out of it. The bracelets are then purchased by customers who want to give back. The holistic approach adopted helps save the environment by cleaning the Nile and recycling waste, improves the livelihood of fishermen and garbage collectors, and activates citizens who are able to pay, ultimately bringing the triple bottom line concept to life.
Furthermore, Salem's strategy helps NGOs tap into funds formerly reserved for marketing purposes, such as corporates' digital marketing budgets. Bassita envisions itself creating 20 campaigns annually, raising a targeted total of EGP 80 million ($4 million) for 2021 (with a continued growth each year), half of which is attributed to digital ad spending, as opposed to CSR budgets alone. As of 2018, the overall digital ad spending in Egypt reached $56 million/year, indicating that by 2021 Salem will incur 4% of digital ad money to create on-ground impact.
Throughout the whole process, Salem is reclaiming value in the attention economy. Instead of solely clicking on content they find attractive, web users are empowered to take a proactive approach by clicking to impact the world. By giving social media users experiences and content that have real meaning in their lives, Salem is realigning technology with humanity's best interest. He orchestrates people's attention in the most empowering way- a phenomenon that has been lacking in a lucrative system intentionally designed to addict us.
Thus far, Clickfunding was replicated in two countries- Brazil and Switzerland. Bassita's next step is to white label and open-source the model to enable any positive initiative to independently operate their own Clickfunding campaigns powered through its website. Although Egypt is the birthplace of "Clickfunding", Salem intends to transform "Clickfunding" from an Egyptian innovation into an international industry.
One thing that has always spurred Salem to action was his constant dissatisfaction with and rejection of the status quo, in addition to his deeply ingrained sense of responsibility towards others. Born and raised in Paris, Salem is the second child of a resilient Palestinian father and Egyptian mother. His father came from a modest Muslim background, and was the first in his family to go to college. His mother, on the other hand, was born into a bourgeois family and raised in Cairo's upscale Zamalek neighborhood. Further, she was Greek Orthodox, the minority within the Egyptian Christian minority. Although their matrimony broke all social norms, it was a union full of love, which probably taught Salem the first lessons about passion and resilience that accompanied him throughout his journey.
In Paris, Salem attended prep school, and learnt a lot from the experience, so he was ready to explore another country; another culture- a decision took Salem to McGill University in Quebec, from which he received his bachelor's degree in Strategic Management. In Canada, Salem met people who radiated with positive energy, and appreciated the horizontal approach to learning adopted by McGill, where they existed in an equitable, conducive learning environment.
Besides his professional journey, Salem loves roaming around the streets of any city he resides in to capture unexpected situations or picture historical and cultural treasures. For instance, one of the photos he took, depicting the inhabitants of Alexandria gathering at night to watch a collapsing building, went viral. Though he may not realize it, but Salem has an ingrained passion for the extraordinary and builds on that in any way possible. This is also evident in his choice of role model; Mahmoud Saïd, a pioneer of modern Arab painting, who produced art that was truly groundbreaking. Saïd is the only Arab artist to date to have three paintings selling for more than $1 million at auction. Whenever he gets the chance, he visits the Mahmoud Saïd Museum featuring 40+ of his paintings in Alexandria, Egypt.
It is not one moment that explicitly shaped Salem's life, but a combination of triggers that always urged him to stand up for society's underdog. In college, he contributed to the creation of a fashion show supporting people with HIV/AIDS. While visiting Egypt every year, Salem was always struck by child laborers not so much, because they were working, but because he had the luxury not to.
In 2007, after graduating from college, Salem insisted on returning to the birthplace of his parents, so he came back to Egypt to work in development. There, he worked for the Siwa Sustainable Initiative, which aims to preserve Siwa's (an urban oasis in Egypt) wealth of natural assets and its cultural heritage. The principal objective of the Initiative was to bring social and economic advantages through empowering the local community, as well as promoting entrepreneurship while conserving the environmental and cultural stability of the Siwa Oasis and its people. Simultaneously, Salem started volunteering with Egypt's garbage collectors' community, where he volunteered 3 times a week to teach English. He wanted to understand the people, the value chain, the community; it was very important for him to understand the dynamics of the communities he helps. This experience instilled in him an unprecedented passion for this community in particular and giving back in general. Ever since 2007, Salem has been a regular visitor, frequenting the neighborhood on a weekly basis. Although he could have worked with the garbage communities, Salem felt his help was not needed there- it is already a highly-efficient closed community- but his urge to change the community in other ways remained. Impressed by the power of social media to mobilize masses during the Arab Spring, Salem wondered how he could harness the incredible energy of Egyptian youth to move beyond the realm of mere connection to that of direct social change. The answer was his social enterprise- Bassita. Plain Simple.
Contact Ashoka Sahel
Sipres II


In keeping with @87History's popular retrieval practice challenge grids idea and linked post, I created some templates to help people.
I have made the font Arial so it will present correctly to you but you can change them however you see fit.
Kate has blogged about this in more depth on her site here.


text:
package io.mycat.server.sqlhandler;

import io.mycat.MycatServer;
import io.mycat.cache.LayerCachePool;
import io.mycat.route.RouteResultset;
import io.mycat.route.RouteResultsetNode;
import io.mycat.route.parser.druid.DruidShardingParseInfo;
import io.mycat.route.parser.druid.MycatStatementParser;
import io.mycat.route.parser.druid.RouteCalculateUnit;
import io.mycat.route.util.RouterUtil;
import io.mycat.server.ErrorCode;
import io.mycat.server.LoadDataInfileHandler;
import io.mycat.server.MySQLFrontConnection;
import io.mycat.server.config.node.SchemaConfig;
import io.mycat.server.config.node.SystemConfig;
import io.mycat.server.config.node.TableConfig;
import io.mycat.server.packet.BinaryPacket;
import io.mycat.server.packet.RequestFilePacket;
import io.mycat.server.parser.ServerParse;
import io.mycat.sqlengine.mpp.LoadData;
import io.mycat.util.ObjectUtil;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.StringReader;
import java.io.UnsupportedEncodingException;
import java.nio.charset.Charset;
import java.sql.SQLNonTransientException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.SortedSet;
import java.util.TreeSet;

import com.alibaba.druid.sql.ast.SQLExpr;
import com.alibaba.druid.sql.ast.expr.SQLCharExpr;
import com.alibaba.druid.sql.ast.expr.SQLLiteralExpr;
import com.alibaba.druid.sql.ast.expr.SQLTextLiteralExpr;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlLoadDataInFileStatement;
import com.alibaba.druid.sql.parser.SQLStatementParser;
import com.google.common.collect.Lists;
import com.google.common.io.Files;
import com.univocity.parsers.csv.CsvParser;
import com.univocity.parsers.csv.CsvParserSettings;

/**
 * mysql命令行客户端也需要启用local file权限,加参数--local-infile=1
 * jdbc则正常,不用设置
 * load data sql中的CHARACTER SET 'gbk'   其中的字符集必须引号括起来,否则druid解析出错
 */
public final class ServerLoadDataInfileHandler implements LoadDataInfileHandler
{
    private MySQLFrontConnection serverConnection;
    private String sql;
    private String fileName;
    private byte packID = 0;
    private MySqlLoadDataInFileStatement statement;

    private Map<String, LoadData> routeResultMap = new HashMap<>();

    private LoadData loadData;
    private ByteArrayOutputStream tempByteBuffer;
    private long tempByteBuffrSize = 0;
    private String tempFile;
    private boolean isHasStoreToFile = false;
    private String tempPath;
    private String tableName;
    private TableConfig tableConfig;
    private int partitionColumnIndex = -1;
    private LayerCachePool tableId2DataNodeCache;
    private SchemaConfig schema;
    private boolean isStartLoadData = false;

    public int getPackID()
    {
        return packID;
    }

    public void setPackID(byte packID)
    {
        this.packID = packID;
    }

    public ServerLoadDataInfileHandler(MySQLFrontConnection serverConnection)
    {
        this.serverConnection = serverConnection;

    }

    private static String parseFileName(String sql)
    {
        if (sql.contains("'"))
        {
            int beginIndex = sql.indexOf("'");
            return sql.substring(beginIndex + 1, sql.indexOf("'", beginIndex + 1));
        } else if (sql.contains("\""))
        {
            int beginIndex = sql.indexOf("\"");
            return sql.substring(beginIndex + 1, sql.indexOf("\"", beginIndex + 1));
        }
        return null;
    }

    private void parseLoadDataPram()
    {
        loadData = new LoadData();
        SQLTextLiteralExpr rawLineEnd = (SQLTextLiteralExpr) statement.getLinesTerminatedBy();
        String lineTerminatedBy = rawLineEnd == null ? "\n" : rawLineEnd.getText();
        loadData.setLineTerminatedBy(lineTerminatedBy);

        SQLTextLiteralExpr rawFieldEnd = (SQLTextLiteralExpr) statement.getColumnsTerminatedBy();
        String fieldTerminatedBy = rawFieldEnd == null ? "\t" : rawFieldEnd.getText();
        loadData.setFieldTerminatedBy(fieldTerminatedBy);

        SQLTextLiteralExpr rawEnclosed = (SQLTextLiteralExpr) statement.getColumnsEnclosedBy();
        String enclose = rawEnclosed == null ? null : rawEnclosed.getText();
        loadData.setEnclose(enclose);

        SQLTextLiteralExpr escapseExpr =  (SQLTextLiteralExpr)statement.getColumnsEscaped() ;
        String escapse=escapseExpr==null?"\\":escapseExpr.getText();
        loadData.setEscape(escapse);

        String charset = statement.getCharset() != null ? statement.getCharset() : serverConnection.getCharset();
        loadData.setCharset(charset);
        loadData.setFileName(fileName);
    }

    @Override
    public void start(String sql)
    {
        clear();
        this.sql = sql;

        SQLStatementParser parser = new MycatStatementParser(sql);
        statement = (MySqlLoadDataInFileStatement) parser.parseStatement();
        fileName = parseFileName(sql);

        if (fileName == null)
        {
            serverConnection.writeErrMessage(ErrorCode.ER_FILE_NOT_FOUND, " file name is null !");
            clear();
            return;
        }
        schema = MycatServer.getInstance().getConfig()
                .getSchemas().get(serverConnection.getSchema());
        tableId2DataNodeCache = (LayerCachePool) MycatServer.getInstance().getCacheService().getCachePool("TableID2DataNodeCache");
        tableName = statement.getTableName().getSimpleName().toUpperCase();
        tableConfig = schema.getTables().get(tableName);
        tempPath = SystemConfig.getHomePath() + File.separator + "temp" + File.separator + serverConnection.getId() + File.separator;
        tempFile = tempPath + "clientTemp.txt";
        tempByteBuffer = new ByteArrayOutputStream();

        List<SQLExpr> columns = statement.getColumns();
        if(tableConfig!=null)
        {
            String pColumn = tableConfig.getPartitionColumn();
            if (pColumn != null && columns != null && columns.size() > 0)
            {

                for (int i = 0, columnsSize = columns.size(); i < columnsSize; i++)
                {
                    SQLExpr column = columns.get(i);
                    if (pColumn.equalsIgnoreCase(column.toString()))
                    {
                        partitionColumnIndex = i;
                        break;

                    }

                }

            }
        }

        parseLoadDataPram();
        if (statement.isLocal())
        {
            isStartLoadData = true;
            //向客户端请求发送文件

            RequestFilePacket filePacket = new RequestFilePacket();
            filePacket.fileName = fileName.getBytes();
            filePacket.packetId = 1;
            filePacket.write(serverConnection);
        } else
        {
            if (!new File(fileName).exists())
            {
                serverConnection.writeErrMessage(ErrorCode.ER_FILE_NOT_FOUND, fileName + " is not found!");
                clear();
            } else
            {
                parseFileByLine(fileName, loadData.getCharset(), loadData.getLineTerminatedBy());
                RouteResultset rrs = buildResultSet(routeResultMap);
                if (rrs != null)
                {
                    flushDataToFile();
                    isStartLoadData = false;
                    serverConnection.getSession2().execute(rrs, ServerParse.LOAD_DATA_INFILE_SQL);
                }

            }
        }
    }

    @Override
    public void handle(byte[] data)
    {

        try
        {
            if (sql == null)
            {
                serverConnection.writeErrMessage(ErrorCode.ER_UNKNOWN_COM_ERROR,
                        "Unknown command");
                clear();
                return;
            }
            BinaryPacket packet = new BinaryPacket();
            ByteArrayInputStream inputStream = new ByteArrayInputStream(data, 0, data.length);
            packet.read(inputStream);

            saveByteOrToFile(packet.data, false);

        } catch (IOException e)
        {
            throw new RuntimeException(e);
        }

    }

    private synchronized void saveByteOrToFile(byte[] data, boolean isForce)
    {

        if (data != null)
        {
            tempByteBuffrSize = tempByteBuffrSize + data.length;
            try
            {
                tempByteBuffer.write(data);
            } catch (IOException e)
            {
                throw new RuntimeException(e);
            }
        }

        if ((isForce && isHasStoreToFile) || tempByteBuffrSize > 200 * 1024 * 1024)    //超过200M 存文件
        {
            FileOutputStream channel = null;
            try
            {
                File file = new File(tempFile);
                Files.createParentDirs(file);
                channel = new FileOutputStream(file, true);

                tempByteBuffer.writeTo(channel);
                tempByteBuffer=new ByteArrayOutputStream();
               tempByteBuffrSize = 0;
                isHasStoreToFile = true;
            } catch (IOException e)
            {
                throw new RuntimeException(e);
            } finally
            {
                try
                {
                    if (channel != null)
                        channel.close();

                } catch (IOException ignored)
                {

                }
            }

        }
    }

    private RouteResultset tryDirectRoute(String sql, String[] lineList)
    {

        RouteResultset rrs = new RouteResultset(sql, ServerParse.INSERT);
        rrs.setLoadData(true);
        if (tableConfig == null && schema.getDataNode() != null)
        {
            //走默认节点
            RouteResultsetNode rrNode = new RouteResultsetNode(schema.getDataNode(), ServerParse.INSERT, sql);
            rrs.setNodes(new RouteResultsetNode[]{rrNode});
            return rrs;
        }
        else if (tableConfig != null&&tableConfig.isGlobalTable())
        {
            ArrayList<String> dataNodes= tableConfig.getDataNodes();
            RouteResultsetNode[] rrsNodes=    new RouteResultsetNode[dataNodes.size()];
            for (int i = 0, dataNodesSize = dataNodes.size(); i < dataNodesSize; i++)
            {
                String dataNode = dataNodes.get(i);
                RouteResultsetNode rrNode = new RouteResultsetNode(dataNode, ServerParse.INSERT, sql);
                rrsNodes[i]=rrNode;
            }

            rrs.setNodes(rrsNodes);
            return rrs;
        }
        else if (tableConfig != null)
        {
            DruidShardingParseInfo ctx = new DruidShardingParseInfo();
            ctx.addTable(tableName);

            if (partitionColumnIndex == -1 || partitionColumnIndex >= lineList.length)
            {
                return null;
            } else
            {
                String value = lineList[partitionColumnIndex];
                RouteCalculateUnit routeCalculateUnit = new RouteCalculateUnit();
                routeCalculateUnit.addShardingExpr(tableName, tableConfig.getPartitionColumn(), parseFieldString(value,loadData.getEnclose()));
                ctx.addRouteCalculateUnit(routeCalculateUnit);
                try
                {
                	SortedSet<RouteResultsetNode> nodeSet = new TreeSet<RouteResultsetNode>();
            		for(RouteCalculateUnit unit : ctx.getRouteCalculateUnits()) {
            			RouteResultset rrsTmp = RouterUtil.tryRouteForTables(schema, ctx, unit, rrs, false, tableId2DataNodeCache);
            			if(rrsTmp != null) {
            				for(RouteResultsetNode node :rrsTmp.getNodes()) {
            					nodeSet.add(node);
            				}
            			}
            		}

            		RouteResultsetNode[] nodes = new RouteResultsetNode[nodeSet.size()];
            		int i = 0;
            		for (Iterator<RouteResultsetNode> iterator = nodeSet.iterator(); iterator.hasNext();) {
            			nodes[i] = (RouteResultsetNode) iterator.next();
            			i++;
            		}

            		rrs.setNodes(nodes);
                    return rrs;
                } catch (SQLNonTransientException e)
                {
                    throw new RuntimeException(e);
                }
            }

        }

        return null;
    }

    private void parseOneLine(List<SQLExpr> columns, String tableName, String[] line, boolean toFile, String lineEnd)
    {

        RouteResultset rrs = tryDirectRoute(sql, line);
        if (rrs == null || rrs.getNodes() == null || rrs.getNodes().length == 0)
        {

            String insertSql = makeSimpleInsert(columns, line, tableName, true);
            rrs = serverConnection.routeSQL(insertSql, ServerParse.INSERT);
        }

        if (rrs == null || rrs.getNodes() == null || rrs.getNodes().length == 0)
        {
            //无路由处理
        } else
        {
            for (RouteResultsetNode routeResultsetNode : rrs.getNodes())
            {
                String name = routeResultsetNode.getName();
                LoadData data = routeResultMap.get(name);
                if (data == null)
                {
                    data = new LoadData();
                    data.setCharset(loadData.getCharset());
                    data.setEnclose(loadData.getEnclose());
                    data.setFieldTerminatedBy(loadData.getFieldTerminatedBy());
                    data.setLineTerminatedBy(loadData.getLineTerminatedBy());
                    data.setEscape(loadData.getEscape());
                    routeResultMap.put(name, data);
                }

                    String jLine = joinField(line, data);
                    if (data.getData() == null)
                    {
                        data.setData(Lists.newArrayList(jLine));
                    } else
                    {

                        data.getData().add(jLine);

                    }

                if (toFile)
                {
                    if(data.getData().size()>100000)
                    {
                        saveDataToFile(data,name);
                    }
                }

            }
        }
    }

    private void flushDataToFile()
    {
        for (Map.Entry<String, LoadData> stringLoadDataEntry : routeResultMap.entrySet())
        {
            LoadData value = stringLoadDataEntry.getValue();
            if(   value.getFileName()!=null&&value.getData()!=null&&value.getData().size()>0)
            {
                saveDataToFile(value,stringLoadDataEntry.getKey());
            }
        }

    }

    private void saveDataToFile(LoadData data,String dnName)
    {
        if (data.getFileName() == null)
        {
            String dnPath = tempPath + dnName + ".txt";
            data.setFileName(dnPath);
        }

           File dnFile = new File(data.getFileName());
            try
            {
             Files.append(joinLine(data.getData(),data), dnFile, Charset.forName(loadData.getCharset()));

            } catch (IOException e)
            {
                throw new RuntimeException(e);
            }finally
            {
                data.setData(null);

            }

    }

    private String joinLine(List<String> data, LoadData loadData)
    {
        StringBuilder sb = new StringBuilder();
        for (String s : data)
        {
            sb.append(s).append(loadData.getLineTerminatedBy())   ;
        }
        return sb.toString();
    }

    private String joinField(String[] src, LoadData loadData)
    {
        StringBuilder sb = new StringBuilder();
        for (int i = 0, srcLength = src.length; i < srcLength; i++)
        {
            String s = src[i]!=null?src[i]:"";
            if(loadData.getEnclose()==null)
            {
                  sb.append(s);
            }   else
            {
                sb.append(loadData.getEnclose()).append(s.replace(loadData.getEnclose(),loadData.getEscape()+loadData.getEnclose())).append(loadData.getEnclose());
            }
            if(i!=srcLength-1)
            {
                sb.append(loadData.getFieldTerminatedBy());
            }
        }

            return sb.toString();

    }

    private RouteResultset buildResultSet(Map<String, LoadData> routeMap)
    {
        statement.setLocal(true);//强制local
        SQLLiteralExpr fn = new SQLCharExpr(fileName);    //默认druid会过滤掉路径的分隔符,所以这里重新设置下
        statement.setFileName(fn);
        String srcStatement = statement.toString();
        RouteResultset rrs = new RouteResultset(srcStatement, ServerParse.LOAD_DATA_INFILE_SQL);
        rrs.setLoadData(true);
        rrs.setStatement(srcStatement);
        rrs.setAutocommit(serverConnection.isAutocommit());
        rrs.setFinishedRoute(true);
        int size = routeMap.size();
        RouteResultsetNode[] routeResultsetNodes = new RouteResultsetNode[size];
        int index = 0;
        for (String dn : routeMap.keySet())
        {
            RouteResultsetNode rrNode = new RouteResultsetNode(dn, ServerParse.LOAD_DATA_INFILE_SQL, srcStatement);
            rrNode.setTotalNodeSize(size);
            rrNode.setStatement(srcStatement);
            LoadData newLoadData = new LoadData();
            ObjectUtil.copyProperties(loadData, newLoadData);
            newLoadData.setLocal(true);
            LoadData loadData1 = routeMap.get(dn);
            if (isHasStoreToFile)
            {
                newLoadData.setFileName(loadData1.getFileName());
            } else
            {
                newLoadData.setData(loadData1.getData());
            }
            rrNode.setLoadData(newLoadData);

            routeResultsetNodes[index] = rrNode;
            index++;
        }
        rrs.setNodes(routeResultsetNodes);
        return rrs;
    }

    private String makeSimpleInsert(List<SQLExpr> columns, String[] fields, String table, boolean isAddEncose)
    {
        StringBuilder sb = new StringBuilder();
        sb.append(LoadData.loadDataHint).append("insert into ").append(table.toUpperCase());
        if (columns != null && columns.size() > 0)
        {
            sb.append("(");
            for (int i = 0, columnsSize = columns.size(); i < columnsSize; i++)
            {
                SQLExpr column = columns.get(i);
                sb.append(column.toString());
                if (i != columnsSize - 1)
                {
                    sb.append(",");
                }
            }
            sb.append(") ");
        }

        sb.append(" values (");
        for (int i = 0, columnsSize = fields.length; i < columnsSize; i++)
        {
            String column = fields[i];
            if (isAddEncose)
            {
                sb.append("'").append(parseFieldString(column, loadData.getEnclose())).append("'");
            } else
            {
                sb.append(column);
            }
            if (i != columnsSize - 1)
            {
                sb.append(",");
            }
        }
        sb.append(")");
        return sb.toString();
    }

    private String parseFieldString(String value, String encose)
    {
        if (encose == null || "".equals(encose) || value == null)
        {
            return value;
        } else if (value.startsWith(encose) && value.endsWith(encose))
        {
            return value.substring(encose.length() - 1, value.length() - encose.length());
        }
        return value;
    }

    @Override
    public void end(byte packID)
    {
        isStartLoadData = false;
        this.packID = packID;
        //load in data空包 结束
        saveByteOrToFile(null, true);
        List<SQLExpr> columns = statement.getColumns();
        String tableName = statement.getTableName().getSimpleName();
        if (isHasStoreToFile)
        {
            parseFileByLine(tempFile, loadData.getCharset(), loadData.getLineTerminatedBy());
        } else
        {
            String content = new String(tempByteBuffer.toByteArray(), Charset.forName(loadData.getCharset()));

            // List<String> lines = Splitter.on(loadData.getLineTerminatedBy()).omitEmptyStrings().splitToList(content);
            CsvParserSettings settings = new CsvParserSettings();
            settings.getFormat().setLineSeparator(loadData.getLineTerminatedBy());
            settings.getFormat().setDelimiter(loadData.getFieldTerminatedBy().charAt(0));
            if(loadData.getEnclose()!=null)
            {
                settings.getFormat().setQuote(loadData.getEnclose().charAt(0));
            }
            if(loadData.getEscape()!=null)
            {
                settings.getFormat().setQuoteEscape(loadData.getEscape().charAt(0));
            }
            settings.getFormat().setNormalizedNewline(loadData.getLineTerminatedBy().charAt(0));
            CsvParser parser = new CsvParser(settings);
            try
            {
                parser.beginParsing(new StringReader(content));
                String[] row = null;

                while ((row = parser.parseNext()) != null)
                {
                    parseOneLine(columns, tableName, row, false, null);
                }
            } finally
            {
                parser.stopParsing();
            }

        }

        RouteResultset rrs = buildResultSet(routeResultMap);
        if (rrs != null)
        {
            flushDataToFile();
            serverConnection.getSession2().execute(rrs, ServerParse.LOAD_DATA_INFILE_SQL);
        }

        // sendOk(++packID);

    }

    private void parseFileByLine(String file, String encode, String split)
    {
        List<SQLExpr> columns = statement.getColumns();
        CsvParserSettings settings = new CsvParserSettings();
        settings.getFormat().setLineSeparator(loadData.getLineTerminatedBy());
        settings.getFormat().setDelimiter(loadData.getFieldTerminatedBy().charAt(0));
        if(loadData.getEnclose()!=null)
        {
            settings.getFormat().setQuote(loadData.getEnclose().charAt(0));
        }
        if(loadData.getEscape()!=null)
        {
            settings.getFormat().setQuoteEscape(loadData.getEscape().charAt(0));
        }
        settings.getFormat().setNormalizedNewline(loadData.getLineTerminatedBy().charAt(0));
        CsvParser parser = new CsvParser(settings);
        InputStreamReader reader = null;
        FileInputStream fileInputStream = null;
        try
        {

            fileInputStream = new FileInputStream(file);
            reader = new InputStreamReader(fileInputStream, encode);
            parser.beginParsing(reader);
            String[] row = null;

            while ((row = parser.parseNext()) != null)
            {
                parseOneLine(columns, tableName, row, true, loadData.getLineTerminatedBy());
            }

        } catch (FileNotFoundException | UnsupportedEncodingException e)
        {
            throw new RuntimeException(e);
        } finally
        {
            parser.stopParsing();
            if(fileInputStream!=null)
            {
                try
                {
                    fileInputStream.close();
                } catch (IOException e)
                {
                    throw new RuntimeException(e);
                }
            }
            if (reader != null)
            {
                try
                {
                    reader.close();
                } catch (IOException e)
                {
                    throw new RuntimeException(e);
                }
            }

        }

    }

    public void clear()
    {
        isStartLoadData = false;
        tableId2DataNodeCache = null;
        schema = null;
        tableConfig = null;
        isHasStoreToFile = false;
        packID = 0;
        tempByteBuffrSize = 0;
        tableName=null;
        partitionColumnIndex = -1;
        if (tempFile != null)
        {
            File temp = new File(tempFile);
            if (temp.exists())
            {
                temp.delete();
            }
        }
        if (tempPath != null && new File(tempPath).exists())
        {
            deleteFile(tempPath);
        }
        tempByteBuffer = null;
        loadData = null;
        sql = null;
        fileName = null;
        statement = null;
        routeResultMap.clear();
    }

    @Override
    public byte getLastPackId()
    {
        return packID;
    }

    @Override
    public boolean isStartLoadData()
    {
        return isStartLoadData;
    }

    /**
     * 删除目录及其所有子目录和文件
     *
     * @param dirPath 要删除的目录路径
     * @throws Exception
     */
    private static void deleteFile(String dirPath)
    {
        File fileDirToDel = new File(dirPath);
        if (!fileDirToDel.exists())
        {
            return;
        }
        if (fileDirToDel.isFile())
        {
            fileDirToDel.delete();
            return;
        }
        File[] fileList = fileDirToDel.listFiles();

        for (int i = 0; i < fileList.length; i++)
        {
            File file = fileList[i];
            if (file.isFile()&&file.exists())
            {
                boolean delete = file.delete();
            } else if (file.isDirectory())
            {
                deleteFile(file.getAbsolutePath());
                file.delete();
            }
        }
        fileDirToDel.delete();
    }

}

redpajama_set_name: RedPajamaGithub


text:
Državna tajna u Hrvatskoj je pravno zaštićena člankom 7 Zakona o zaštiti tajnosti podataka. Naročito su navedeni podatci na koje se zaštita odnosi. Tu se propisuju pojam, vrste i stupnjevi tajnosti.

Izdaja ili veleizdaja podataka o osobite važnosti za obranu, nacionalnu sigurnost ili nacionalne interese Republike Hrvatske kažnjava se po kaznenom zakonu.

Vanjske poveznice
Zakon o zaštiti tajnosti podataka

pravo

redpajama_set_name: RedPajamaWikipedia


Ideal for trade shows and large events, this customized pop up tower offers high-quality printing on an impressively tall display. While standing at 10', this portable fixture is quite lightweight thanks to the slim aluminum poles that make up its frame. Each piece clicks into place using push buttons, ensuring that the exhibition pop up tower remains steady while in use and minimizing the time needed to assemble and break down. The graphic then slips over the display fixture and zips at the bottom, creating a taut, wrinkle-less appearance. Using dye-sublimated printing, the fabric is guaranteed to keep its brightness through countless uses and won't fade when stretched over the frame. This pop up tower is complete with 2 portable bags to safely transport all pieces to and from trade shows.
33.9" x 33.9" x 10.6"


IS A DOCTOR'S OFFICE OR MEDICAL FACILITY ENTITLED TO YOUR SOCIAL SECURITY NUMBER?
WHY DOESN'T MY DOCTOR KNOW WHAT MY INSURANCE COVERS?
Where should I go for an x-ray? Hospital, urgent care, or independent radiology practice?


Having been approached by Chief Fire Officers Association in June (2015) and tasked with giving their Annual Report a bold new makeover that would help them display key stats and facts in a more 'bitesized' engaging way, we're delighted to be able to share the results. By introducing eye-catching iconography and tabbed pages in a handy size, the new brochure helped streamline the report.
Feedback on how the report was received was fantastic and the client not only thought that the report looked great, but it was also dubbed a real success across the board. Naturally, we were thrilled with the feedback and couldn't wait to get stuck into the next project!


LONGUEUIL, Québec, May 22, 2018 (GLOBE NEWSWIRE) -- Stornoway Diamond Corporation (TSX:SWY) (the "Corporation" or "Stornoway") is proud to announce that the Renard Mine Rescue team comprising David Langlois, Adam Paquet, Danny Bérubé, François Gilbert, Guillaume Lemay, Patrick Tremblay, Raphaël Duchesne, Simon Gélinas, Steve Veillette and Yannick Savard was the overall winner at the 56th Quebec Provincial Mine Rescue Competition that took place between May 17th and 19th in Boucherville, Quebec. In addition to the honour of winning the overall title, the Renard team took home the title of 'Best Team on the Field', and team leaders David Langlois and Raphaël Duchesne won for 'Best Team Management'.
Stornoway is a leading Canadian diamond exploration and development company listed on the Toronto Stock Exchange under the symbol SWY and headquartered in Montreal. Our flagship asset is the 100% owned Renard Diamond Project, Québec's first diamond mine. Stornoway is a growth oriented company with a world-class asset, in one of the world's best mining juPrisdictions, in one of the world's great mining businesses.


text:
News Apple, Twitter build giant data centres
Discussion in 'Article Discussion' started by Sifter3000, 23 Jul 2010.
Sifter3000 I used to be somebody
http://www.bit-tech.net/news/bits/2010/07/23/apple-twitter-build-giant-data-centres/1
Sifter3000, 23 Jul 2010
iwod New Member
Internet is a Global thing, Having 1 Gigantic Data Center in US doesn't Serve its EU and Asia customers any better. Even US alone should have at least a few more Mid Size Data Center scattered around. And Since Apple pretty much serve Static Pages only on itunes and App Store. I dont understand why they would need to build their own Data Center. Especially one which cost a Billion.
iwod, 23 Jul 2010
sb1991 New Member
This is apple, remember. A billion dollars probably buys a couple of laptops and an mp3 player.
sb1991, 23 Jul 2010
mi1ez Active Member
About bloody time twitter!
mi1ez, 23 Jul 2010
mclean007 Officious Bystander
I don't get the point of Twitter, to be honest. I know, I know, I'm a refusenik, but I really couldn't care less if @iamdiddy is tired or that @aplusk just drove a "Lambroghini" (sic).
Anyway, back on topic, I hope this signifies that Apple is planning a streaming / subscription iTunes service. If it works like Napster / Spotify, with high bitrate full length tracks able to sync to your iPhone for offline listening, with access to the full iTunes library for a fixed monthly fee, it would be incredible.
Maybe they're looking to push video more heavily through iTunes, or maybe they're just building out more capacity to serve the existing iTunes platform - yes it's basically static content (though there is quite a bit of wizardry in Genius, and then there's account management, payment processing, recommendations, user ratings and comments, etc.), so CPU and memory requirements shouldn't be outrageous (compared to, say, a search engine), but the sheer bandwidth requirement of iTunes must be prodigious - tens of millions of apps and songs served every single day adds up to a fairly chunky amount of data. Add in a few million iPhone users downloading iOS 4 (a couple of hundred MBs) in the space of a couple of days, and it gets even more serious.
Maybe they're looking to expand their cloud offerings to extend MobileMe somehow. Maybe they're considering offering a service to challenge Amazon Web Services. They also probably need additional capacity to handle iAds, or whatever they're called. There are so many possibilities...
mclean007, 23 Jul 2010
@iwod - why is it a bad thing to have a data centre in the US? As you say, the internet is a global thing, and for most applications the average user wouldn't know or care whether the host they are connected to is in the next street or on the other side of the world. A data centre in the US can serve users anywhere in the world without difficulty.
The only exceptions are highly latency related applications, such as online gaming and videoconferencing, where the user experience is degraded by the introduction of additional latency that is inevitable where the client and host are thousands of miles apart, separated by many intermediate nodes. As far as I'm aware, Apple is not in the business of hosting online games or conferences, so a single data centre makes a lot of sense, in terms of economy of scale.
Another possibility for Apple's data centre is doing search - being so reliant on Google for iPhone services such as search / local search / maps might be perceived by the Apple board as a strategic weakness, given Apple's major competitor at the moment is Google.
javaman May irritate Eyes
Apple will need a larger data center for all the complaints, hate mail and bull carp excuses for the iphone4. Most likely so they can extract their revenge starting with a raid their at home.
On a seriously note, with cloud computing and the handling and use of such data becoming important and even more costly, designing your own data centers is a good move. After all itunes and apples apps is a huge market. Apple has a lot of investment in digital distribution could simply be an expansion of that.
javaman, 23 Jul 2010
Gareth Halfacree WIIGII! Staff Administrator Super Moderator Moderator
Sifter3000 said: ↑
Possible - and it wouldn't be the first time Apple has blundered into a market that it has absolutely no experience in and won (q.v. iPod) - but it seems more likely they'd just partner with a different search provider. I'm willing to bet that Yahoo! or even Microsoft's Bing would offer them *very* tempting terms just to get one over on Google.
Gareth Halfacree, 23 Jul 2010
Autti New Member
Apple aren't a competitor with Google.
Google makes money by people using the internet through a very complex advertising scheme, Apple make money buy people buying their devices which they then use to go on the internet. See the non-competitiveness?
I think Apple might just be looking to create a cloud for a seamless transfer between Apple devices via 3G/4G and Wifi. So that your Mac Laptop and iPhone and iPad could all be synced together and share date ala AirVideo, at least thats what i would do because its a really good idea and increases function.
Autti, 23 Jul 2010
Ergath Giant Zombie Pigeon Photographer
"Apple aren't a competitor with Google."
Um, hello? Android? If they think at all corporately Apple will be trying to damage Google in any way they can. At the moment, Apple's devices are used to access Google's search engine - I'm sure they would prefer to be the ones making money from advertising rather than the big G.
Personally I hope their new datacentre burns down with Steve Jobs in it. Oh, I'm sorry, was that a little harsh?
Ergath, 23 Jul 2010
Sheiken Wat?
It is because Apple TV is going to be cloud based
Sheiken, 23 Jul 2010
do_it_anyway Member
Sheiken said:
do_it_anyway, 23 Jul 2010
Autti said:
Wishful thinking, given they won't even let you sync your iPhone with a Mac via WiFi. I think their over-the-air syncing ambitions begin and end with MobileMe. Maybe it will get beefed up a little, and I for one would be tempted to subscribe if it actually allowed syncing of music and video content. It would be pretty sweet to be able to connect over WiFi from anywhere in the world to my iTunes library at home and pull some different stuff onto my iPhone.
You know what else they should do, while we're on a Cupertino wishlist bender - make iTunes network aware with offline access. I'd like my iTunes library to sit on a server at home which then syncs automatically to my laptop, iPhone etc. So if I rip a new CD to my laptop, next time I'm at home it syncs wirelessly to my server; if I create a playlist on one device, it syncs to the other. That way I have access to my full library on my laptop, wherever I am, but the 'master' library stays at home for listening via Airport Express.
You're confusing business model with market. Apple and Google do indeed have very different business models, but they are increasingly competing for the same markets: mobile users.
DarkLord7854 New Member
I'd like to see their new Apple TV use the cloud, and how it'll stack up against GoogleTV.
Maybe they'll finally get their cloud services for the iPhone completely straightened out too
DarkLord7854, 23 Jul 2010
Ergath said:
Google don't make money with Android, Android doesn't provide any direct financial flow. What it does do is allow people to use the internet and foster creating growth in mobile internet users.
Is Android a substitute for iOS, yes. Are the two companies competing for what all companies aim to produce: money, no.
Google will make just as much money from an iPhone user an Android user. Their reason for creating Android is to get more users, not to convert iPhone users, because that doesn't make any more money for them.
After all, competing in one market alone doesn't make the companies rivals by any standard. The only two similar products are iOS and Android.
Google will make just as much money from an iPhone user an Android user. Their reason for creating Android is to get more users, not to convert iPhone users, because that doesn't make any more money for them
That's untrue; while the core of Android is free, several key parts - notably access to the Android Market - are licensed directly from Google, so it will be receiving a payment for that.
Secondly, it's not necessarily true that iPhone users net Google as much cash as Android users - increasingly iPhone users are using apps to access web services, not a browser, and app activity generally doesn't involve Google searches - so there's no way for Google to serve ads or collect data. You should also be aware that Apple has moved to ban Google's mobile ad network (AdMob), probably to leave the field clear for its own iAds. Google and Apple are very much in direct competition with each other.
They also get the fees from the paid apps that developers put up.
Jerz New Member
Anyone else see this as big brother setting up to take over everything digital?
Jerz, 23 Jul 2010


This is a placeholder page for Alex Cunnimgham, which means this person is not currently on this site. We do suggest using the tools below to find Alex Cunnimgham.
You are visiting the placeholder page for Alex Cunnimgham. This page is here because someone used our placeholder utility to look for Alex Cunnimgham. We created this page automatically in hopes Alex Cunnimgham would find it. If you are not Alex Cunnimgham, but are an alumni of Chapman High School Chapman, KS, register on this site for free now.


We don't need no stinking license!
One of the most liberating experiences of homeschooling is the realization that you have the freedom to teach your children according to their own interests, needs, and maturity. It's way different than a modern cookie-cutter educational style that assumes that physical, emotional, and psychological development are exactly the same for every kid of the same age. As homeschoolers, we can also tailor their education to be in tune with our values and morals, not society's. That reason is a huge part of why we homeschool.
One of the things I hear from dads that don't homeschool is while they have an interest in teaching their kids, they feel that because they work outside the home, they don't have the time for it.
Fathers that work outside the home can still be active participants in their children's education, even if their time for "homeschool" is limited.
Remember, homeschool is always in. You don't have to have a lesson plan or a huge chunk of time in order to help educate your kids. You don't need to teach from a curriculum, or know everything about everything before you can teach them. You just have to be aware of those teachable moments, and use them to help your kids learn about the world around them.
When you talk to them as if they were little people with brains like sponges instead of just little kids, that can set the tone for teachable moments.
I've found that some of the most profound lessons come from our daily experience, and not necessarily a planned activity. Field trips are awesome for homeschoolers, but just taking the time to connect with your child every day is more powerful than any day-trip they could take.
The sun neither comes up nor goes down.
So go ahead, be a homeschool superhero.
You've already got the skills.
Thank you for articulating this so well. I have two very different kids but neither one was well served by institutional school. Our answer to most questions is, "That's a great question. Where do you think we can find the answer?" As a result, mine can find the answer to any question almost as quickly as I can!
I wish their friends and neighbors who attend our local "Exemplary School in an Exemplary School District" could do as well.
I totally agree with you! We seem to do our best learning in the car, or at the dinner table!! I love kids questions! We can go from politics to theology to why the dog was sick in about five minutes.
Nice post – thank you. I enjoyed reading it.


first to get the correct constant definitions. If CMD is IPC_STAT, then ARG must be a variable that will hold the returned shmid_ds structure. Returns like ioctl: undef for error; "0 but true" for zero; and the actual return value otherwise. See also "SysV IPC" in perlipc and the documentation for IPC::SysV.
Portability issues: "shmctl" in perlport.


3rd Tile Inc supply Ceramic Tiles and are located in Arlington, TX. To find out more information about the products 3rd Tile Inc offer contact them on 817-226-3861.
provided the information about 3rd Tile Inc that you see on this listing. If you are aware of any new information about 3rd Tile Inc please fill out the update form with as much detail as possible.